Libdmtx против ZXing для декодирования DataMatrix?

Насколько надежна локализация штрих-кода ZXing для декодирования DataMatrix по сравнению с libdmtx?

У меня есть набор png-файлов наклеек (проприетарных, поэтому, к сожалению, я не могу ими поделиться), содержащих штрих-коды DataMatrix. Эти наклейки располагаются на плоских поверхностях, имеют очень приятные тихие зоны и обычно расположены по центру изображения, но страдают от неравномерного освещения и небольшого количества пыли, что, вероятно, является самым большим препятствием для надежного декодирования.

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

Локализация штрих-кода в ZXing существенно уступает libdmtx? Если я попытаюсь выполнить ту же предварительную обработку файлов изображений перед их запуском через ZXing, смогу ли я добиться аналогичных результатов? Я сильно предпочитаю библиотеку Java (ZXing), но, возможно, у меня нет другого выбора, кроме как использовать libdmtx. Был бы признателен за любое понимание, спасибо!

Я также заметил, что некоторые штрих-коды datamatrix не распознаются ZXing, но libdmtx их распознает. Я думаю, что существуют разные варианты формата datamatrix, и ZXing не обрабатывает их все должным образом, поэтому, если ZXing не работает с вашими штрих-кодами, то в этом случае, вероятно, единственным вариантом будет использование libdmtx.

Leszek Szary 15.03.2019 15:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
1 147
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

У меня была такая же проблема, как и у вас, но на стороне кодирования. Согласно моим выводам, Zxing, безусловно, уступает Libdmtx. Мы используем обе библиотеки в проекте C++ и Java.

Есть случай, когда Zxing ломается при генерации штрих-кода, посмотрите мои комментарии здесь: https://github.com/zxing/zxing/issues/624

Однако Libdmtx работает плавно. Другие бесплатные опции, которые у вас есть в мире Java (они предназначены для кодирования):

  • barcode4j
  • OkapiBarcode

Полностью согласен - пошел с libdmtx в продакшн.

Neil Philip 15.07.2019 04:53

Другой альтернативой является относительно новый порт ZXing cpp здесь: https://github.com/nu-book/zxing-cpp.

Он содержит полностью новый детектор DataMatrix, призванный исправить серьезные ограничения исходной версии Java. Он был специально разработан для работы с изображениями с низким разрешением (размер модуля всего около 2 пикселей) и символами, которые имеют только необходимый 1 модуль тихой зоны и загруженный фон.

Следующее сравнение, конечно, не «справедливо», но я только что попробовал с помощью утилиты dmtxread библиотеки libdmtx мой тестовый набор изображений, и он пропустил 3 из 17 образцов и занял в 300 раз больше времени по сравнению с моим кодом :).

выглядит довольно интересно. Способен ли он обнаруживать относительно небольшую матрицу данных на большом изображении (например, лист A4 с матрицей данных размером с клавиатуру? Я пробовал на живой демонстрации WASM, но она не обнаруживает ее успешно, но, возможно, я что-то пропустил .

R.Damasinoro 19.11.2020 13:45

Это ограничение выпущенной библиотеки. Вы найдете обсуждение здесь: github.com/nu-book/zxing-cpp/issues/146. Если вы можете создать его самостоятельно, то «снятие комментариев» с упомянутой строки кода должно помочь. Если у вас все еще не получилось, сообщите нам об этой проблеме с github.

axxel 26.11.2020 16:32

Другие вопросы по теме