【发布时间】:2011-01-22 17:43:27
【问题描述】:
是否可以限制tesseract 正在寻找的字符集(例如,仅搜索字母 a-z)?这将大大改善我的结果。
【问题讨论】:
是否可以限制tesseract 正在寻找的字符集(例如,仅搜索字母 a-z)?这将大大改善我的结果。
【问题讨论】:
在 tessdata/configs 目录中创建一个配置文件(例如“字母”) - 通常是 /usr/share/tesseract/tessdata/configs
或 /usr/share/tesseract-ocr/tessdata/configs
并将这一行添加到配置文件中:
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz
...或者也许 [a-z] 有效。我不知道。然后调用 tesseract 类似这样:
tesseract input.tif output nobatch letters
这将限制 tesseract 仅识别想要的字符。
【讨论】:
要在配置文件中使用白名单或使用-c tessedit_char_whitelist=... 命令行开关,在最新的 4.0 版本中,您必须将 OCR 引擎模式设置为“仅限原始 Tesseract”。这是因为新的“神经网络 LSTM”模式不尊重白名单设置。
4.0 版本的正确命令行示例:
tesseract input_file output_file --oem 0 -c tessedit_char_whitelist=abc123
更新:在较新的版本 (4.0) 中,Windows 和一些 Linux 安装程序默认安装了损坏的 eng.traineddata 文件。临时解决方案是将tessdata\eng.traineddata 文件替换为旧版本中的文件。这个文件应该是大约 30MB。否则你会得到错误:“Tesseract 无法加载任何语言!”或类似的。
但是,在 tesseract 4.1.1 中,上述错误已得到修复,也就是说,在 tesseract 4.1.1 中,以下工作就像一个魅力
tesseract my_image.jpg stdout -l mylang configfile myconfig
其中“myconfig”是位于 TESSDATA/configs 中的纯文本文件
load_system_dawg false
load_freq_dawg false
tessedit_char_whitelist ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
【讨论】:
pyt.image_to_data(im_gray_res, config='-c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ --psm 11 --oem 0') 时出现以下错误pytesseract.pytesseract.TesseractError: (1, "Failed loading language 'eng' Tesseract couldn't load any languages! Could not initialize tesseract.")。关于如何仅使用所需的字符集完成检测的任何想法?
pytesseract.image_to_data(Image.open('test.png')) 等不带附加参数的简单命令?因为该错误似乎与字符白名单本身无关。
eng.traineddata 文件已损坏。我已经尝试了最新的 4.0 版本并得到了同样的错误。临时解决方案是将tessdata\eng.traineddata 文件替换为旧版本中的文件。这个文件应该是 30MB 左右(而不是像 4.0 版本安装的那样 4MB)。
tessdata/eng.trainedddata 中的文件,并且在 4.0 版本上都可以完美运行。
除了配置文件,还有-c标志:
tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
更新
确认正在开发版本:
【讨论】:
只需为在 Android 上使用 tesseract 的任何人添加此内容。在您设置语言等的 readOCR 函数中添加以下行;
tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
您还可以对要排除的字符进行黑名单。
【讨论】:
tesseract.setTessVariable()
我使用的是 Ubuntu 18.04.4 LTS。默认的 tesseract 是版本 4。我不能使用白名单。然后我将它升级到版本 5。然后我使用下面的命令并且它工作了。
tesseract sample.jpg stdout -l eng --oem 3 --psm 7
Warning: Invalid resolution 0 dpi. Using 70 instead.
LL £036 GL)
tesseract sample.jpg stdout -l eng --oem 3 --psm 7 -c tessedit_char_whitelist="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Warning: Invalid resolution 0 dpi. Using 70 instead.
L4036GL
【讨论】:
在 Tesseract 4.00 版中,无法做到这一点。您只能微调您的模型或使用正则表达式从预测中删除多余的字符。
【讨论】:
我的答案完全来自已接受的答案,并在此处添加以使任何使用 Tesseract NuGet 包的 .NET Windows 开发人员受益 - 但是,请注意我的适用于任何人的项目符号 2 > 在 Windows 上使用任何种Tesseract
tessdata 文件夹中创建一个 config 文件夹。config 文件夹中添加一个letters 文件。
使用 TextPad 之类的编辑器,它可以帮助您将其保存在 UNIX 中
格式,ANSI 编码(我最初尝试过 UTF-8 / IBM PC 和
tesseract 在我的测试输出中出现错误)letters 文件,在“属性”面板中将构建操作设置为Content,并进一步标记为复制到输出目录: var ocrEng = new TesseractEngine("./tessdata", "eng", EngineMode.Default, "letters");
【讨论】: