PyTesseract - 将OCR限制为一组字符

时间:2017-02-07 14:00:13

标签: python ocr tesseract

我遇到了pytesseract的问题。我知道你可以使用命令行参数将tesseract限制为一组特定的字符:

tesseract input.tif output nobatch digits

我发现一些人说他们可以在python中用以下几行来限制tesseract:

import tesseract
ocr = tesseract.TessBaseAPI();
ocr.Init(".","eng",tesseract.OEM_TESSERACT_ONLY)
ocr.SetVariable("tessedit_char_whitelist", "0123456789")

但这是使用tesseract API,我使用pytesseract ....最后我也尝试过:

print(image_to_string(someimage, config='outputbase digits'))

但这并不起作用,因为我的输出中仍然有字母。这很奇怪,因为我使用下面的代码,它正在工作:

print(image_to_string(screen, config='-psm 10'))

PSM代表PageSegmentationMode,它允许我将我的图像文件解析为单个字符。我不明白为什么这样做有效,而之前的片段并不是什么时候它们都是tesseract的命令行参数......

有人可以帮忙吗?我想将这两个选项与自定义wordlist一起使用(我在tesseract的config文件夹中创建)。

1 个答案:

答案 0 :(得分:3)

终于找到了解决方案,如果它可以帮助任何人......这是来自tesseract帮助页面:

  

最简单的tesseract调用:

tesseract imagename outputbase

我可以从中推断出正确的语法(实际上,我在堆栈上发现的所有东西都指向了错误的方向,可能是因为tesseract的不同版本)。请记住,我正在使用tesseract 3.05(在GitHub上提供win安装程序)和pytesseract(从pip安装)。

image_to_string(someimage, config='digits -psm 7')

正如我们在帮助页面上看到的那样,outputbase参数首先出现在文件名之后,而在其他选项之前,这允许使用PSM和amp;限制性的charset。

来自tesseract帮助页面的所有命令行参数都可以这样使用,在 config 变量!!