2016-10-19 35 views
3

TLDR;版本:如何給Tesseract一個單詞列表(.NET封裝)

有沒有人有使用.NET包裝,我可以看到Tasseract工作的'bazaar'配置?

我敢肯定,這就是我想要的東西(只承認從列表中某些字),但它似乎並沒有做任何事情


我有可能的字符串我的一個很短名單試圖找到(1-4個字)。爲正方體的文檔指出:

如果您要更換整個字典,你將需要解壓 的.traineddata文件,創建一個新詞 - 耶文件,然後打包 文件恢復成。訓練數據文件。有關更多 的詳細信息,請參閱TrainingTesseract。

這聽起來就像我想要的!所以,我看TrainingTesseract看到:

的traineddata文件僅僅是輸入文件的串聯, 與包含已知文件類型 的偏移表的內容。請參閱源代碼中的ccutil/tessdatamanager.h以獲取當前接受的文件名列表 。

太好了。那麼我該如何解開這個簡單的輸入文件連接,修改內容和標題並重新打包呢? :)

This post似乎是同樣的問題 - 涉及單純地關閉了默認的字典和使用用戶的詞代替:

讓我們假設你想OCR英文,但抑制正常 詞典並加載替代詞列表和備選列表 的模式 - 這兩個文件是最常用的額外數據 文件。

如果你的語言包是/path/to/eng.traineddata和HOCR 配置在/路徑/到/ CONFIGS/HOCR然後創建三個新的文件:

/路徑/要/工程。用戶的話:-snip

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

/路徑/到/ CONFIGS /集市:-snip

現在,如果你通過 字bazaar作爲Tesseract的尾隨命令行參數, Tesseract不會打擾加載系統詞典,也不會加載和使用您提供的eng.user-words文件 和eng.user-patterns文件。前者是一個簡單的詞 列表,每行一個。後者的格式記錄在read_pattern_list()的 dict/trie.h中。

但是這樣做完全沒有區別!

我創建與發動機:

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-words(UTF-8,Unix行結尾)文件在eng.traineddata旁邊。

+0

我想知道這是否可能?我想知道是否有人使用Tesseract而不是開發人員? –

回答

0

你知道了嗎?

看起來這裏是爲了提高其發現字典中的單詞的首道:

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

如何增加在字典中的/力量的信任?

對於的tesseract-OCR < 3.01嘗試在字典/ permute.cpp正在增加NON_WERD和GARBAGE_STRING到也許3或甚至5

對於的tesseract-OCR> = 3.01嘗試增加變量language_model_penalty_non_freq_dict_word和language_model_penalty_non_dict_word在配置文件。默認情況下,它們分別是0.1和0.15。

+0

沒有。從來沒有想過它。我所做的任何事情似乎都沒有發生什麼變化(除非幾次變得更糟) –

相關問題