2016-10-19 5 views
3

TLDR; версия:Как предоставить Tesseract список слов (.NET wrapper)

У кого-нибудь есть рабочая конфигурация «базара» для Tasseract с помощью .NET-оболочки, которую я мог видеть?

Я довольно уверен, что это то, что я хочу (распознают только некоторые слова из списка), но это, кажется, не делать ничего


У меня есть довольно короткий список возможных строк I» m пытается найти (1-4 слова). Документация Tesseract гласит:

Если вы хотите заменить весь словарь, вам нужно будет распаковать в .traineddata файл, создать новый файл слово DAWG, а затем упаковать файлы обратно в. подготовленный файл. См. TrainingTesseract для получения дополнительных .

Это похоже на то, что я хочу! Поэтому я смотрю на TrainingTesseract и посмотреть:

traineddata файл просто соединение исходных файлов, с оглавлением, который содержит смещение известного файла типов. См. Ccutil/tessdatamanager.h в исходном коде для списка принятых в настоящее время имен файлов.

Отлично. Итак, как я могу начать распаковывать эту простую конкатенацию входных файлов, модифицируя контент и заголовок и повторно упаковывая его? :)

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

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

Если ваш языковой пакет в /path/to/eng.traineddata и hocr конфигурации находится в каталоге/путь/к/конфиги/hocr затем создать три новых файла:

/путь/к/анг. пользовательские слова: -snip

/path/to/eng.user-patterns: -snip

/путь/к/конфиги/базар: -snip

Теперь, если вы пройдете слово базар как параметр командной строки для трейдера, Tesseract, Tesseract не будет загружать системный словарь, а также словарь частых слов и будет загружать и использовать слова eng.user и файлы eng.user-patterns, которые вы предоставили. Первое - это простое слово список, по одному в каждой строке. Формат последнего документа зарегистрирован в dict/trie.h на read_pattern_list().

Но, сделав это, это не имеет никакого значения!

Я создаю двигатель:

using (engine = new TesseractEngine(@"C:\src\x\tessdata", "eng", EngineMode.Default, @"C:\src\x\tessdata\engine.config")) 

Совершив файл (UTF-8, Unix строки окончаний) engine.config:

load_system_dawg  F 
load_freq_dawg  F 
user_words_suffix user-words 
user_patterns_suffix user-patterns 

и создал eng.user-шаблоны и слова eng.user (UTF-8, Unix line end) вместе с eng.traineddata.

+0

Интересно, возможно ли это? Интересно, кто-нибудь использует Tesseract, кроме разработчиков? –

ответ

0

Вы поняли это?

Похоже, здесь это способ увеличить его предпочтения поиска слов из словаря:

https://github.com/tesseract-ocr/tesseract/wiki/FAQ#how-to-increase-the-trust-instrength-of-the-dictionary

Как повысить доверие к/силе словаря?

Для тессеракт-< 3,01 OCR попробовать повысит NON_WERD и GARBAGE_STRING в Dict/permute.cpp, может быть, 3 или даже 5.

Для тессеракт-ОРЗ> = 3,01 попытаться увеличить переменные language_model_penalty_non_freq_dict_word и language_model_penalty_non_dict_word в конфигурации файл. По умолчанию они равны 0,1 и 0,15 соответственно.

+0

Нет. никогда не разобрался. Ничто из того, что я сделал, казалось, что конфигурация не имеет никакого значения (за исключением случаев, когда она несколько ухудшилась) –