是否可以限制 tesseract 查找的字符集(例如仅查找字母 a-z)?这将大大提高我的识别结果。
在tessdata/configs目录下创建一个配置文件(例如“letters”)- 通常是 /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 仅识别所需字符。
在最新的4.0版本中,要在配置文件或使用命令行开关-c tessedit_char_whitelist=...
中使用白名单,您需要将OCR引擎模式设置为"Original Tesseract only"。这是因为新的"Neural nets 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中,上述bug已经被修复,也就是说,在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.")
。有没有什么想法可以只使用所需的字符集来完成检测? - SKRtesseract 4.0.0-beta.4-138-g2093
。你为什么要尝试alpha版本呢?此外,你是否只在白名单中看到输出的字符?你尝试过使用--oem 1/2/3
吗? - SKReng.traineddata
文件已经损坏。我尝试了最新的4.0版本,但是出现了相同的错误。临时解决方案是用旧版本的tessdata\eng.traineddata
文件替换它。这个文件应该大约30MB(不像4.0版本安装的那个只有4MB)。 - Bartłomiej Uliasztessdata/eng.trainedddata
中的旧文件,在4.0版本上一切都运行得非常完美。 - Bartłomiej Uliasz除了配置文件之外,还有-c
标志:
tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
更新
已确认适用于以下版本:
针对在Android上使用Tesseract的用户,需要在readOCR函数中设置语言等参数时添加以下代码行:
tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
我正在使用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
NuGet包的.NET Windows开发人员受益 - 但请注意我的第二个要点适用于在Windows上使用Tesseract
的任何人
tessdata
文件夹内创建一个config
文件夹。config
文件夹内添加一个letters
文件。
letters
文件的构建操作设置为Content
,并进一步标记为复制到输出目录: var ocrEng = new TesseractEngine("./tessdata", "eng", EngineMode.Default, "letters");