TLDR;版本:
有没有人有一个工作'集市'使用我能看到的.NET包装器来配置Tasseract吗?
我非常确定这是我想要的(只能识别列表中的某些字词),但它似乎没有做任何事情
我有一个非常简短的列表,列出了我试图找到的可能字符串(1-4个字)。 Tesseract的文档说明:
如果要替换整个字典,则需要解压缩 .traineddata文件,创建一个新的word-dawg文件,然后打包 文件回到.traineddata文件。有关更多信息,请参阅TrainingTesseract 的信息。
这听起来像我想要的!所以我看TrainingTesseract并看到:
训练的数据文件只是输入文件的串联, 使用包含已知文件偏移量的目录 类型。请参阅源代码中的ccutil / tessdatamanager.h以获取列表 目前接受的文件名。
大。那么我该如何解压这个简单的输入文件串口,修改内容和标题并重新打包呢? :)
This post似乎是同一个问题 - 只需关闭默认词典并使用用户词:
让我们假设您想用英语进行OCR,但是可以抑制正常情况 字典并加载替代单词列表和替代列表 模式 - 这两个文件是最常用的额外数据 文件。
如果您的语言包位于/path/to/eng.traineddata和hocr中 config在/ path / to / configs / hocr中,然后创建三个新文件:
/path/to/eng.user-words:-snip
/path/to/eng.user-patterns:-snip
/ path / to / configs / bazaar:-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.traineddata旁边创建了eng.user-patterns和eng.user-words(UTF-8,Unix行结尾)文件。
答案 0 :(得分:0)
你有没有想到这个?
看起来这是一种增加其'的方法。寻找字典词的偏好:
如何增加对词典的信任度?
对于tesseract-ocr< 3.01尝试将dict / 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。
答案 1 :(得分:0)
不确定您是否还在寻找,但这是我使用的。
TesseractEngine _ocrEngine = new TesseractEngine("tessdata", "eng", EngineMode.Default);
_ocrEngine.SetVariable("tessedit_char_whitelist", "1579ABCDE "); // this is how you specify a variable
_ocrEngine.TryPrintVariablesToFile("allv.txt"); // this could help you see all possible variables
user_words_file
也是一个你可以使用的变量 - 我假设你也可以在那里设置路径,但我没有测试它。