2011-02-05 5 views
14

Ну я использую исполнила .NET-версии этого OCR, которая может быть найдена @http://www.pixel-technology.com/freeware/tessnet2/Tesseract OCR библиотека - Обучение Шрифт

У меня он работает, однако цель этого заключается в переводе номерных знаков, печально двигатель действительно не точно перевести некоторые буквы, например, здесь это изображение я просмотрел, чтобы определить проблемы, характер

enter image description here

Результат:

12345B7B9U ABCDEFGHIJKLMNUPIJRSTUVHXYZ

Поэтому следующие символы переводятся неправильно:

1, O, Q, W

Это не кажется слишком плохо, но на моих номерных знаков, в результате ISN» т так велика:

enter image description here = H4 ODM

enter image description here = ЛДГ IFW

Поддельного тест

enter image description here = NR4 y2k

Как вы могли бы сказать, что я пытался шумоподавление, увеличение контрастности и удаление пикселей, которые не являются абсолютно черным, без каких-либо реальных улучшений.

Очевидно, вы можете «изучить» новые шрифты, но мне кажется, что мне нужно будет перекомпилировать библиотеку для .NET, также кажется, что это выполняется на ОС Linux, которой у меня нет.

http://www.scribd.com/doc/16747664/Tesseract-Trainingfor-Khmer-LanguageFor-Posting

Так что я застрял в том, что попробовать дальше, я написал небольшой консольное приложение исключительно для целей тестирования, если кто-то хочет попробовать. Если у кого-нибудь есть идеи/графические манипуляции/мысли библиотеки, я был бы рад услышать их.

+0

Вот еще одна проблема: O и 0 имеют экскавацию той же формы, поэтому механизм OCR не может распознать их правильно. –

+0

Да, я заметил, что не могу поверить, что они имеют одинаковую форму. В любом случае, я уже думал о методе работы с этим внешним OCR, так что это np. – Ash

+0

@ Мартин Турау: неправильно! В текстовом шрифте 0 и O отличаются большую часть времени - счастливо! Поэтому, если вы делаете специальное обучение для этого шрифта, вы должны иметь возможность различать их, это мой случай. Конечно, это может быть намного сложнее, если вы заранее не знаете шрифтов. – Emmanuel

ответ

28

Недавно я использовал Tesseract через Tessnet2 (Tessnet2 - обертка VS2008 C++ вокруг Tesseract 2.0, сделанная Реми Томасом, если я хорошо помню). Пусть я постараюсь помочь вам с небольшим количеством знаний я по поводу этого инструмента:

  • 1-го, как я уже говорил выше, эта обертка только для Tesseract 2.0, а newest Tesseract version on Google Code 3,00 (код больше не принимал на Source Forge). Есть регулярные участники: я видел, что запланирована версия 3.01. Таким образом, вы не пользуетесь последними улучшениями, включая анализ макета страницы, который может помочь, когда ваши номерные знаки не на 100% горизонтали.

  • Я спросил Реми об обертке Tessnet2 .NET вокруг версии 3, он пока не планирует. Так, как и я, вам придется сделать это самостоятельно!

  • Так что, если вы хотите, чтобы получить последнюю версию исходных текстов, вы можете загрузить их из Subversion хранилища (все описал на dedicated site page), и вы будете иметь возможность компилировать их, если у вас есть Visual Studio 2008, так как они содержат решение VS2008 в подпапке vs2008.Это решение составлено из проектов VS2008 C++, поэтому для получения результатов на C# вам нужно будет использовать .NET P/Invoke с созданным проектом tessDll. Опять же, если вам это нужно, у меня есть примеры кода, которые могут вас заинтересовать, но вы можете захотеть остаться с C++ и создать свои собственные проекты WinForm, например!

  • Когда вы достигли компиляции (для этого не должно быть серьезных проблем, но скажите мне, если вы встретитесь с некоторыми из них, я, возможно, встретил их тоже :-)), вы получите в выпуске несколько двоичных файлов, которые будут позволяют вам пройти специальную подготовку! Опять же, есть a page specially dedicated to Tesseract 3 training. Благодаря этому тренингу, вы можете:

    • сдерживать свой набор символов, который будет автоматически удалять знаки препинания («/ - \» вместо «А», например)

    • указывают на неоднозначность вы обнаружили («D» вместо «O», как вы могли видеть, «B» вместо «8» и т. д.), которые будут учтены, когда вы будете использовать свое обучение.

  • Я также видел, что результаты Тессеракта лучше, если вы сдерживаться изображение в зоне, где расположены буквы (т.е. не лицо, не пейзаж вокруг): в моем случае, я должен был признать только конкретный зоны карт, снятых с веб-камеры, поэтому я использовал обработку изображений для ограничения зоны. Это было долго, конечно, но мои изображения поступали из разных источников, поэтому у меня не было выбора. Если вы можете получить снимок с минимальными ограничениями, это будет здорово!

Надеюсь, что это оказало какую-либо помощь, не стесняйтесь давать мне свои замечания и вопросы!

+0

Большое спасибо за всесторонний ответ ! Думал, возможно, Tesseract 3 может помочь с точки зрения признания, если изменения, связанные с стилями шрифтов, были заменены, хотя я сомневаюсь, что это так. Как вы уже упоминали, код доступен в VS2008, поэтому оболочка не требуется, однако я не знаю, как сделать .NET P/Invoke, особенно в этой библиотеке, поэтому любые советы, которые вы могли бы предоставить, включая компиляция функциональности в DLL, подобная Tessnet2, была бы замечательной! – Ash

+1

P/Invoke - это способ связи между управляемыми (C#, VB) и неуправляемыми (неуправляемыми C++, например, такими проектами VS2008). Я должен был использовать его, потому что мне нужно было взаимодействовать с C#, но если вы можете остаться только на C++, не нужно P/Invoke. Теперь, если вам это действительно нужно, я покажу вам пример! – Emmanuel

+0

Ссылка на «страница, специально предназначенная для обучения Tesseract 3», больше не доступна. – null

10

Привет, я сделал много ocr с tesseract, и у меня были некоторые из ваших проблем. Вы спрашиваете об инструментах ОБРАБОТКИ ИЗОБРАЖЕНИЙ, и я бы рекомендовал "unpaper" (есть также порты Windows, см. Google). Это хорошая программа для перекоса, unrotate, remove-border-and-noise и так далее. Отлично подходит для работы до ocr'ing.

Если у вас есть (несколько) переменный цвет фона на ваших изображениях, я бы рекомендовал "textcleaner" imagemagick script . Я думаю, что это краевое обнаружение и отбеливание всех неброских вещей.

И если у вас есть сложный текст, то "ocropus" может быть полезным. Синтаксис (на Linux): "ocroscript прн-Тесс"

Моя установка 1. textcleaner 2. unpaper 3. ocroups

С помощью этих трех шагов, которые я могу читать почти ничего. Даже совершенно расплывчатые + шумные изображения, сделанные в неровном освещении, с двумя колонками плотно упакованного текста, выглядят очень читаемыми. ОК, может быть, ваши потребности не так уж много, но шаг 1) & 2) может пригодиться вам.

+1

Ваша ссылка "unpaper" не работает. Также я хотел бы получить ваш совет по одному из моих вопросов. Http://stackoverflow.com/questions/25668203/tesseract-improvements-and-image-pre-processing-steps – 2vision2

+0

У меня есть другой запрос. Мое намерение состоит в том, чтобы определить имя и символы в ID-карте. Я использовал «int tesseract :: TESSDLL_API :: MeanTextConf», чтобы получить оценку доверия. С учетом этого показателя доверия для каждого персонажа есть вероятность, что я могу решить, превышает ли показатель доверия какой-то процент, то признанный персонаж является точным? Если я ошибаюсь, можете ли вы объяснить использование метода «MeanTextConf»? – 2vision2

3

Я в настоящее время строю механизм распознавания номерного знака для ispy - я получил гораздо лучшие результаты тессеракта, когда я разделить номерной знак на отдельные символы и построил новое изображение отображается вертикально с белым пространством вокруг них, как:

Вт

О

О

M

Я думаю, что большая проблема, с которой сталкивается tesseract, заключается в том, наоборот. Ввод изображения с символами, расположенными по вертикали, позволяет рассматривать их как отдельные символы вместо текста.

2

Отличный читать! http://robotics.usc.edu/publications/downloads/pub/635/

Об перекос проблемы для номерных знаков:

Проблема: При вводе OCR берутся из ручной камеры или другого устройства формирования изображения, чья перспектива не является фиксированным, как сканером, текстовые строки могут получить перекосы от их оригинальной ориентации [13]. Основываясь на наших экспериментах, подача такого поворотного изображения на наш двигатель OCR дает крайне плохие результаты . Предлагаемый подход: перед вызовом механизма распознавания требуется процесс обнаружения перекоса . Если обнаружен какой-либо перекос, выполняется процедура автоматического поворота для коррекции перекоса перед дальнейшей обработкой текста. При определении алгоритма , который будет использоваться для обнаружения перекоса, мы обнаружили, что многие подходы , такие как упомянутые в [13], основаны на предположениях, что документы имеют сэкономленные поля. Однако это предположение не всегда выполняется в нашем приложении. Кроме того, традиционные методы, основанные на морфологическом методе , чрезвычайно медленны, и имеют тенденцию терпеть неудачу при наличии захваченных камерой изображений. В этой работе мы выбираем более надежный подход, основанный на Branchand- . Алгоритм поиска линейных строк (алгоритм RAST) [25] для обнаружения перекоса и автоматического поворота. Основная идея этого алгоритма заключается в том, чтобы идентифицировать каждую линию независимо и использовать наклон лучшей линии подсчета очков как угол наклона для всего текстового сегмента . После обнаружения угла наклона, поворот выполняется соответствующим образом. Основываясь на наших экспериментах, мы нашли , что этот алгоритм обладает высокой устойчивостью и чрезвычайно эффективным и быстрым. Тем не менее, он подвергся одному незначительному ограничению в ощущением, что ему не удалось обнаружить вращение больше 30. Мы также попробовали альтернативный подход, который мог обнаружить любой угол наклона до 90. Однако этот подход основывался на на наличие какого-либо креста на изображении. Из-за отсутствия растяжимости мы решили придерживаться алгоритма RAST .

0

ABCocr.NET использует Tesseract3, поэтому может быть целесообразным, если вам нужен последний код под .NET.

1

Tesseract 3.0x, по умолчанию, наказывает комбинации, которые не являются словами и не являются общими словами. В часто задаваемых вопросах описывается метод увеличения его отвращения к такой глупости. Возможно, вам будет полезно отключить штраф за редкие или несуществующие слова, как описано (обратно) здесь: http://code.google.com/p/tesseract-ocr/wiki/FAQ#How_to_increase_the_trust_in/strength_of_the_dictionary?

0

Если кто-то из будущего сталкивается с этим вопросом, есть инструмент под названием jTessBoxEditor, который делает обучение Tesseract легким. Все, что вы делаете, это указать на папку, содержащую образцы изображений, затем нажать кнопку и создать файл * .learneddata для вас.