Библиотека Tesseract OCR - Учебный шрифт
Ну, я использую подчиненную .NET-версию этого OCR, которую можно найти @http://www.pixel-technology.com/freeware/tessnet2/
У меня есть работа, однако цель этого - перевести номерные знаки, к сожалению, двигатель действительно не точно переводит несколько букв, например, здесь изображение, которое я просматривал, чтобы определить проблемы персонажа
![enter image description here]()
Результат:
12345B7B9U
ABCDEFGHIJKLMNUPIJRSTUVHXYZ
Поэтому следующие символы переводятся неправильно:
1, O, Q, W
Это не кажется слишком плохим, однако на моих номерных знаках результат не так велик:
= H4 ODM
= LDH IFW
Поддельный тест
= NR4 y2k
Как вы могли бы сказать, я попытался уменьшить уровень шума, увеличив контрастность и удалив пиксели, которые не являются абсолютно черными, без реальных улучшений.
По-видимому, вы можете "изучить" новые шрифты для движка, но я думаю, что мне нужно будет перекомпилировать библиотеку для .NET, также кажется, что это выполняется на ОС Linux, которой у меня нет.
http://www.scribd.com/doc/16747664/Tesseract-Trainingfor-Khmer-LanguageFor-Posting
Итак, я застрял, как попробовать, я написал быстрое консольное приложение исключительно для тестирования, если кто-то захочет попробовать его. Если у кого-нибудь есть идеи/графические манипуляции/идеи библиотеки, я был бы рад услышать их.
Ответы
Ответ 1
Недавно я использовал Tesseract через Tessnet2 (Tessnet2 - обертка VS2008 С++ вокруг Tesseract 2.0, сделанная Реми Томасом, если я хорошо помню). Позвольте мне помочь вам с небольшим знанием, которое у меня есть относительно этого инструмента:
-
1st, как я уже сказал выше, эта оболочка предназначена только для Tesseract 2.0, а новейшая версия Tesseract в Google Code - 3,00 (код больше не размещается на Source Forge). Есть регулярные участники: я видел, что запланирована версия 3.01. Таким образом, вы не пользуетесь последними усовершенствованиями, включая анализ макета страницы, который может помочь, когда ваши номерные знаки не на 100% горизонтали.
-
Я попросил Rémy для обертки Tessnet2.NET вокруг версии 3, он пока не планирует. Так, как и я, вам придется сделать это самостоятельно!
-
Итак, если вы хотите получить последнюю версию источников, вы можете загрузить их из репозитория выделенная страница сайта), и вы сможете скомпилировать их, если у вас есть Visual Studio 2008, так как они содержат VS2008 решение в vs2008
подпапка. Это решение составлено из проектов VS2008 С++, поэтому для получения результатов на С# вам нужно будет использовать .NET P/Invoke с tessDll
, созданным проектом. Опять же, если вам это нужно, у меня есть примеры кода, которые могут вас заинтересовать, но вы можете захотеть остаться с С++ и создать свои собственные проекты WinForm, например!
-
Когда вы достигли компиляции (для этого не должно быть серьезных проблем, но скажите, если вы встретитесь с некоторыми из них, я, возможно, тоже их встретил:-)), вы получите несколько двоичных файлов, которые позволит вам пройти специальную подготовку! Опять же, есть страница, специально предназначенная для обучения Tesseract 3. Благодаря этому обучению вы можете:
-
сдерживать набор символов, который автоматически удаляет пунктуацию (например, "/- \" вместо "A" )
-
указывают на обнаруженные неоднозначности (вместо "O" вместо "O" вместо "8" и т.д.), которые будут учтены, когда вы будете использовать свое обучение.
-
Я также видел, что результаты Tesseract лучше, если вы сдерживаете изображение в зоне, где расположены буквы (т.е. нет лица, нет пейзажа): в моем случае мне нужно было распознать только определенную зону карты, снятые с веб-камеры, поэтому я использовал обработку изображений, чтобы сдержать зону. Это было долго, конечно, но мои изображения поступали из разных источников, поэтому у меня не было выбора. Если вы можете получить снимок с минимальными ограничениями, это будет здорово!
Я надеюсь, что это помогло, не стесняйтесь давать мне свои замечания и вопросы!
Ответ 2
Привет, я сделал много ocr с tesseract, и у меня были некоторые из ваших проблем. Вы спрашиваете об инструментах IMAGE PROCESSING, и я бы рекомендовал "unpaper" (есть также порты Windows, см. Google). Это хороший перекос, unrotate, remove-border-and-noise и так далее. Отлично подходит для работы перед открытием.
Если у вас есть (несколько) цвет фона на ваших изображениях, я рекомендую "textcleaner" imagemagick script
Я думаю, что это край, обнаруживающий и отбеливающий все неистовые вещи.
И если у вас сложный текст, то "ocropus" может быть полезным.
Синтаксис (на linux): "ocroscript recess"
Моя настройка
1. textcleaner
2. газета
3. ocroups
С этими тремя шагами я могу читать почти все. Даже совершенно расплывчатые + шумные изображения, сделанные в неровном освещении, с двумя колонками плотно упакованного текста, выглядят очень читаемыми. Хорошо, может быть, ваши потребности не так уж много, но шаг 1) и 2) могут вам пригодиться.
Ответ 3
В настоящее время я создаю механизм распознавания номерного знака для ispy - у меня получились гораздо лучшие результаты от tesseract, когда я разделяю номерной знак в отдельные персонажи и построил новое изображение, отображаемое вертикально с белым пространством вокруг них, например:
Ш
4
О
О
M
Я думаю, что большая проблема, с которой сталкивается tesseract, заключается в том, что она пытается сделать слова из горизонтальных букв и цифр, а в случае номерных знаков с буквами и цифрами, смешанными, это решит, что число - это буква или наоборот. Ввод изображения с символами, расположенными по вертикали, позволяет рассматривать их как отдельные символы вместо текста.
Ответ 4
Отличное чтение! http://robotics.usc.edu/publications/downloads/pub/635/
О вашей проблеме перекоса для номерных знаков:
Проблема: когда вход OCR берется из ручной камеры или другое устройство формирования изображения, чья перспектива не фиксирована, как сканер, текстовые строки могут перекоситься с их оригинального ориентации [13]. Основываясь на наших экспериментах, повернутое изображение на наш OCR-двигатель производит крайне бедные Результаты. Предлагаемый подход: необходим процесс обнаружения перекоса перед вызовом механизма распознавания. Если какой-либо перекос обнаружен, процедура автоматического поворота выполняется для коррекции искажения перед дальнейшей обработкой текста. При определении алгоритма для использования при обнаружении перекоса, мы обнаружили, что многие подходы, например, упомянутые в [13], основаны на предположения о том, что документы имеют значения. Однако, это предположение не всегда выполняется в нашем приложении. Кроме того, традиционные методы, основанные на морфологических операции и методы прогнозирования чрезвычайно медленны и имеют тенденцию терпеть неудачу при наличии захваченных камерой изображений. В этом мы выбираем более надежный подход, основанный на Branchand- Алгоритм поиска границы строки (алгоритм RAST) [25] для обнаружения перекоса и автоматического поворота. Основная идея этого алгоритм состоит в том, чтобы идентифицировать каждую строку независимо и использовать наклон наилучшей линии подсчета очков как угол наклона для всего текстовый сегмент. После обнаружения угла наклона вращение соответственно. Основываясь на наших экспериментах, мы обнаружили этот алгоритм будет очень надежным и чрезвычайно эффективным и быстро. Однако он подвергся одному незначительному ограничению в что он не смог обнаружить вращение больше 30. Мы также попробовали альтернативный подход, который мог бы обнаружить любые угол перекоса до 90. Однако этот подход был основан на наличие какого-либо креста на изображении. Из-за отсутствие расширяемости, мы решили придерживаться RAST алгоритм.
Ответ 5
Tesseract 3.0x, по умолчанию, наказывает комбинации, которые не являются словами и не являются общими словами. В часто задаваемых вопросах описывается метод увеличения его отвращения к такой глупости. Возможно, вам будет полезно отключить штраф за редкие или несуществующие слова, как описано здесь (обратно):
http://code.google.com/p/tesseract-ocr/wiki/FAQ#How_to_increase_the_trust_in/strength_of_the_dictionary?
Ответ 6
ABCocr.NET использует Tesseract3, поэтому может быть целесообразным, если вам нужен последний код под .NET.
Ответ 7
Если кто-то из будущего сталкивается с этим вопросом, есть инструмент jTessBoxEditor, который делает обучение Tesseract легким. Все, что вы делаете, это указать его в папку, содержащую образцы изображений, затем нажать кнопку и создать файл *.learneddata для вас.