【问题标题】:How to give Tesseract a word list (.NET wrapper)如何给 Tesseract 一个单词列表(.NET 包装器)
【发布时间】:2016-10-19 09:56:15
【问题描述】:

TLDR;版本:

是否有人使用我可以看到的 .NET 包装器为 Tasseract 提供有效的“集市”配置?

我很确定这就是我想要的(只能识别列表中的一些单词),但它似乎没有任何作用


我有一个很短的可能字符串列表(1-4 个字)。 Tesseract 的文档指出:

如果你想替换整个字典,你需要解压 .traineddata文件,新建word-dawg文件,然后打包 文件回到 .traineddata 文件。有关更多信息,请参见 TrainingTesseract 详情。

这听起来像我想要的!所以我看看TrainingTesseract 看看:

训练的数据文件只是输入文件的串联, 带有包含已知文件偏移量的目录 类型。请参阅源代码中的 ccutil/tessdatamanager.h 以获取列表 当前接受的文件名。

太好了。那么,我该如何解压缩这个简单的输入文件串联,修改内容和标题并重新打包呢? :)

This post 似乎是同一个问题 - 只需关闭默认字典并改用用户词:

假设你想用英文进行 OCR,但抑制了正常的 字典并加载替代单词列表和替代列表 of patterns — 这两个文件是最常用的额外数据 文件。

如果您的语言包位于 /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

现在,如果你通过 word bazaar 作为 Tesseract 的尾随命令行参数, Tesseract 不会打扰加载系统字典或 常用词词典,并将加载和使用 eng.user-words 和您提供的 eng.user-patterns 文件。前者是一个简单的词 列表,每行一个。后者的格式记录在 dict/trie.h on 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.traineddata 旁边创建了 eng.user-patterns 和 eng.user-words(UTF-8,Unix 行尾)文件。

【问题讨论】:

  • 我想知道这是否可能?我想知道除了开发人员之外是否有人在使用 Tesseract?

标签: .net tesseract


【解决方案1】:

你发现了吗?

看起来这是一种增加查找字典单词偏好的方法:

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

如何增加对字典的信任/强度?

对于 tesseract-ocr

对于 tesseract-ocr >= 3.01,尝试在配置文件中增加变量 language_model_penalty_non_freq_dict_word 和 language_model_penalty_non_dict_word。默认情况下,它们分别为 0.1 和 0.15。

【讨论】:

  • 不。从来没有想通。我所做的一切似乎对配置没有任何影响(除非它变得更糟了几次)
【解决方案2】:

不确定您是否还在寻找,但这是我使用的。

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 也是您可以使用的变量 - 我假设您也可以在那里设置路径,但我没有测试它。

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多