PyTesseract - 将 OCR 限制为一组字符
Posted
技术标签:
【中文标题】PyTesseract - 将 OCR 限制为一组字符【英文标题】:PyTesseract - Restricting OCR to a set of characters 【发布时间】:2017-06-24 19:27:25 【问题描述】:我在使用 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 的命令行参数时,sn-p 之前的无效...
谁能帮忙?我想将这两个选项与自定义单词列表(我在 tesseract 的配置文件夹中创建)一起使用。
【问题讨论】:
【参考方案1】:终于找到了解决方案,如果它可以帮助任何人...这是来自 tesseract 帮助页面:
tesseract 的最简单调用:
tesseract imagename outputbase
我可以从中推断出正确的语法(事实上,我在堆栈溢出中发现的所有内容几乎都将我指向了错误的方向,可能是因为不同版本的 tesseract)。请记住,我使用的是 tesseract 3.05(GitHub 上提供的 win 安装程序)和 pytesseract(从 pip 安装)。
image_to_string(someimage, config='digits -psm 7')
正如我们在帮助页面上看到的,outputbase 参数位于文件名之后和其他选项之前,这允许同时使用 PSM 和受限字符集。
tesseract 帮助页面中的所有命令行参数都可以这样使用,在 config 变量中!!
【讨论】:
您的配置字符串不正确。最后应该有配置。例如。 '-psm 7 位数字' 有没有办法只限制英文字母和数字??以上是关于PyTesseract - 将 OCR 限制为一组字符的主要内容,如果未能解决你的问题,请参考以下文章
OCR引擎Tesseract以及pytesseract详解及实例