Я столкнулся с действительно странной проблемой с обнаружением QR-кода.
TL; DR
Проще говоря, ZBar и ZXing не могут обнаружить QR-коды на многих изображениях.
Пример изображения. (Зеркало).
На моем Mac я zbar
установил через Brew. У меня zxing
настройка с использованием JAR-файлов из здесь. Оба не могут обнаружить QR-код на изображении в качестве примера. (Примечание: обнаружение работает для многих других изображений; я не делаю глупых ошибок при выполнении zbar или zxing.)
Но если я открою "сканер штрих-кода "на моем телефоне и поднесите его к экрану ноутбука с указанным выше QR-кодом, приложение его обнаружит. Кроме того, если я загружу изображение выше на zxing.org, он также обнаружит QR-код там.
Что могло быть не так?
Расширенная версия
У меня есть много физических листов бумаги с напечатанными на них действительными QR-кодами (как на изображении выше). QR-коды распознаются идеально, прямо с бумаги с помощью любого сканера штрих-кода камеры мобильного приложения.
Затем я сканирую эти листы с помощью двух сканеров с разрешением 300 точек на дюйм:
- Fujitsu ScanSnap S1300i
- Brother ADS-1500W
Формат вывода - JPG (других вариантов в программном обеспечении обоих сканеров нет).
Когда я запускаю zbar на любом изображении, созданном сканером Fujitsu (сканирование с использованием их программного обеспечения ScanSnap), ВСЕГДА обнаруживается QR-код.
Когда я запускаю zbar (или zxing) для изображений, созданных сканером Brother, обнаружение QR-кода очень сильно промахивается.
Фактический случай: я отсканировал 31 лист на сканере Brother. Изображения находятся здесь (кроме G-Drive зеркало с нетронутыми изображениями). Затем я написал сценарий, чтобы просмотреть каждое изображение и найти в нем QR-код. Скрипт здесь.
Полный вывод сценария производится здесь.
Сводка изображений сканера Brother:
Total number of images scanned: 31
Num images with ZBAR QR detected: 17
Num images ZBAR FAILED: 14
Num images with ZXING QR detected: 15
Num images ZXING FAILED: 16
Вы можете видеть, что оба программного обеспечения не распознают QR-код для многих изображений. А для некоторых изображений успешно работает только одно из двух программ. Для многих других изображений удались оба.
05161801.JPG
- это одно изображение из указанного выше набора, которое не было обнаружено обоими программами. Но то же изображение, загруженное на zxing.org, работает. Приложение сканера штрих-кода на моем телефоне также обнаруживает QR-код с экрана моего ноутбука для этого изображения.
Подсказки
Тот факт, что обнаружение QR работает для тех же листов бумаги, когда они сканируются с помощью сканера Fujitsu, говорит мне, что сканер Brother применяет некоторую пост-обработку, из-за которой обнаружение QR становится ненадежным (это все еще не объясняет, как zxing.org работает для этих изображений). Мне интересно, можно ли использовать imagemagick, чтобы каким-то образом заставить изображение работать с ZBar. Я попытался "улучшить" с помощью скрипта textcleaner
Фреда. Я еще не смог его взломать.
Я потратил МНОГО времени, пытаясь понять это. Буду признателен за любые предложения, предложения или решения. Спасибо!
ОБНОВЛЕНИЕ: добавление изображений ОДИНАКОВЫХ листов бумаги, отсканированных с помощью сканера Fujitsu
Вы можете загрузить нетронутые изображения с здесь.
Я запустил сценарий barcode_checker.py
(такой же, как указано выше) на этих изображениях Fujitsu. Как упоминалось ранее, QR-код обнаруживается на КАЖДОМ ОДНОМ ИЗОБРАЖЕНИИ! (ZXING действительно терпит неудачу в некоторых случаях, но ZBAR успешен на 100%)
Полный вывод сценария производится здесь.
Сводка изображений сканера Brother:
Total number of images scanned: 31
Num images with ZBAR QR detected: 31
Num images ZBAR FAILED: 0
Num images with ZXING QR detected: 26
Num images ZXING FAILED: 5