我正在尝试将某些车牌图像训练为特定字体。我想知道在训练它的时候我应该把它放在unicharambigs文件中。我有一个没有unicharambigs文件训练的数据集。但是当我在我的代码中包含tessdata文件夹时,它在运行时抛出异常,说“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”。我是使用tesseract的新手我有几个问题需要澄清,因为我认为上述异常是由于下列问题之一而发生的
1)是否必须拥有unicharambigs文件?如果是这样,我应该在创建最终训练数据之前将其放入此文件中?
2)在与C#代码集成时,应该在tessdata文件夹中记入哪些文件?
我一直在测试预训练数据集,但我想拥有自己的数据集,当我使用该tessdata文件夹时,应用程序不会退出上述运行时异常。因此我相信它与我自己的tessdata文件夹有关。
更新
只是添加问题。当我使用tesseract安装创建的默认tessdata文件夹时,应用程序工作正常,但结果有误。我再次训练tesseract并用训练后生成的新训练数据文件替换现有的训练数据文件,我的应用程序再次崩溃。
我正在使用C#和tesseract dot net wrapper。
答案 0 :(得分:1)
实际上这里的问题是经过训练的tessedata和tesseract DLL的版本不匹配。我猜那个训练有素的tessedata是最新的> 3.0版本,因为那个旧版本(2.0)dll正在抛出异常,如尝试读取或写入受保护的内存“所以请尝试使用最新的tesseract dll。https://github.com/charlesw/tesseract/tree/master/Samples 从上面的链接下载示例项目并测试您的训练数据,它有Nuget tesseract软件包的参考,所以这将支持Tesseract 3.02训练的tessedata。