Обнаружение текста на семи сегментном дисплее через Tesseract OCR
Проблема, с которой я работаю, заключается в извлечении текста из изображения, и для этого я использовал Tesseract v3.02. Образцы изображений, из которых я должен извлечь текст, относятся к показаниям счетчика. Некоторые из них имеют сплошной фон на листе, а некоторые из них имеют светодиодный дисплей.
Я подготовил набор данных для сплошного фона листа, и результаты некоторые из них эффективны.
Основная проблема, с которой я столкнулся сейчас, - это текстовые изображения со светодиодным/ЖК-фоном, которые не распознаются Tesseract, и из-за этого набор тренировок не генерируется.
Может ли кто-нибудь направлять меня в правильном направлении, как использовать Tesseract с Seven Segment Display (LCD/LED background), или есть ли другая альтернатива, которую я могу использовать вместо Tesseract.
![LED background image 1]()
![LED background image 2]()
![Meter 1 with solid sheet background]()
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
Это похоже на задачу предварительной обработки изображения. Tesseract действительно предпочел бы, чтобы его изображения были белыми по черному тексту в растровом формате. Если вы дадите ему то, что не так, он сделает все возможное, чтобы преобразовать его в этот формат. Это не очень понятно, как это сделать. Используя некоторый инструмент манипуляции с изображениями (мне кажется, как imagemagick), вам нужно сделать изображения более удовлетворенными tesseract. Легким первым проходом может быть гауссовское размытие с малым радиусом, порог с довольно низким значением (вы пытаетесь сохранить только черный цвет, поэтому 15% кажется правильным), а затем инвертируйте изображение.
Затем жесткая часть становится зная, какую задачу перед обработкой выполнить. Если у вас есть метаданные, рассказывающие вам, с каким дисплеем вы имеете дело, отлично. Если нет, я подозреваю, что вы можете посмотреть на гистограммы цвета изображения, чтобы хотя бы выяснить, белый ли текст на черном или черном. Если это единственные сценарии, белый-на-черном всегда сплошной фон, а черный-на-цвет - это семисегментный дисплей, тогда все готово. Если нет, вам нужно быть умным. Удачи, и, пожалуйста, сообщите нам, что вы придумали.
Ответ 2
https://github.com/upupnaway/digital-display-character-rec/blob/master/digital_display_ocr.py
Было ли это использование openCV и tesseract, а также обучаемых данных "letgodigital"
-ступенчатые функции включают обнаружение границ и извлечение отображения с использованием самого большого контура. Затем пороговое изображение использует otsu или бинаризацию и передает его через функцию ptyesseracts image_to_string.
Ответ 3
Взгляните на этот проект:
https://github.com/arturaugusto/display_ocr
Здесь вы можете загрузить подготовленные данные для 7-сегментного шрифта и python script с некоторыми возможностями предварительного процесса.