Насколько надежна локализация штрих-кода ZXing для декодирования DataMatrix по сравнению с libdmtx?
У меня есть набор png-файлов наклеек (проприетарных, поэтому, к сожалению, я не могу ими поделиться), содержащих штрих-коды DataMatrix. Эти наклейки располагаются на плоских поверхностях, имеют очень приятные тихие зоны и обычно расположены по центру изображения, но страдают от неравномерного освещения и небольшого количества пыли, что, вероятно, является самым большим препятствием для надежного декодирования.
Я хотел бы использовать модифицируемую библиотеку Java для их декодирования, и кажется, что ZXing - единственный вариант с открытым исходным кодом (открытый для других предложений). Однако, пропуская эти изображения через Онлайн-декодер ZXing, я постоянно получаю НЕТ НАЙДЕННЫХ штрихкодов, даже на самых чистых изображениях. Напротив, когда я запускаю одни и те же изображения через проприетарные онлайн-декодеры, такие как Бесплатный онлайн-сканер штрих-кода от Inlite, я получаю надежные декодеры для всех изображений. Моя компания реализовала библиотеку на языке C, которая также надежно декодирует изображения штрих-кода, обрабатывая их и вызывая libdmtx. Точно так же этот онлайн-декодер DataMatrix, построенный на libdmtx, также может надежно читать мои файлы изображений.
Локализация штрих-кода в ZXing существенно уступает libdmtx? Если я попытаюсь выполнить ту же предварительную обработку файлов изображений перед их запуском через ZXing, смогу ли я добиться аналогичных результатов? Я сильно предпочитаю библиотеку Java (ZXing), но, возможно, у меня нет другого выбора, кроме как использовать libdmtx. Был бы признателен за любое понимание, спасибо!




У меня была такая же проблема, как и у вас, но на стороне кодирования. Согласно моим выводам, Zxing, безусловно, уступает Libdmtx. Мы используем обе библиотеки в проекте C++ и Java.
Есть случай, когда Zxing ломается при генерации штрих-кода, посмотрите мои комментарии здесь: https://github.com/zxing/zxing/issues/624
Однако Libdmtx работает плавно. Другие бесплатные опции, которые у вас есть в мире Java (они предназначены для кодирования):
Полностью согласен - пошел с libdmtx в продакшн.
Другой альтернативой является относительно новый порт ZXing cpp здесь: https://github.com/nu-book/zxing-cpp.
Он содержит полностью новый детектор DataMatrix, призванный исправить серьезные ограничения исходной версии Java. Он был специально разработан для работы с изображениями с низким разрешением (размер модуля всего около 2 пикселей) и символами, которые имеют только необходимый 1 модуль тихой зоны и загруженный фон.
Следующее сравнение, конечно, не «справедливо», но я только что попробовал с помощью утилиты dmtxread библиотеки libdmtx мой тестовый набор изображений, и он пропустил 3 из 17 образцов и занял в 300 раз больше времени по сравнению с моим кодом :).
выглядит довольно интересно. Способен ли он обнаруживать относительно небольшую матрицу данных на большом изображении (например, лист A4 с матрицей данных размером с клавиатуру? Я пробовал на живой демонстрации WASM, но она не обнаруживает ее успешно, но, возможно, я что-то пропустил .
Это ограничение выпущенной библиотеки. Вы найдете обсуждение здесь: github.com/nu-book/zxing-cpp/issues/146. Если вы можете создать его самостоятельно, то «снятие комментариев» с упомянутой строки кода должно помочь. Если у вас все еще не получилось, сообщите нам об этой проблеме с github.
Я также заметил, что некоторые штрих-коды datamatrix не распознаются ZXing, но libdmtx их распознает. Я думаю, что существуют разные варианты формата datamatrix, и ZXing не обрабатывает их все должным образом, поэтому, если ZXing не работает с вашими штрих-кодами, то в этом случае, вероятно, единственным вариантом будет использование libdmtx.