专栏名称: Python程序员
最专业的Python社区,有每日推送,免费电子书,真人辅导,资源下载,各类工具。我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动
目录
相关文章推荐
Python爱好者社区  ·  90W,确实可以封神了! ·  2 天前  
Python爱好者社区  ·  全球首个满级QQ正式诞生!满级后长这样 ·  昨天  
Python大全  ·  16个必知必会的Python技能! ·  昨天  
Python开发者  ·  刚刚,OpenAI正式发布o3-pro!奥特 ... ·  昨天  
Python爱好者社区  ·  很严重了,大家别轻易离职 ·  3 天前  
51好读  ›  专栏  ›  Python程序员

用python和Tesseract实现光学字符识别(OCR)

Python程序员  · 公众号  · Python  · 2017-07-18 08:10

正文

请到「今天看啥」查看全文


注意: pytesseract不提供真正的Python功能。相反,它只是为tesseract二进制文件提供一个接口。如果您查看GitHub上的源码,您将看到该库只是将图片写入磁盘上的临时文件,然后调用tesseract二进制文件并捕获结果输出。这绝对有点黑客,但是它为我们完成了这项工作。

我们来回顾一下从背景中分割前景文字的代码,然后利用我们刚刚安装的pytesseract

用Tesseract-OCR和python实现OCR

首先创建一个ocr.py文件:

2到6行是导入的包,image类用以从硬盘加载PIL格式的的图像。
9到14行是命令行参数,主要有以下两个:
--image: 传递给OCR系统图片的路径
--preprocess: 预处理方法。此项是可选的,对于本教程,可以接受两个值: thresh blur
接下来,我们将加载图像,将其二进制化并将其写入磁盘。

首先, 从磁盘加载图像到内存,然后将其转换为灰度图。接下来,根据我们的命令行参数指定预处理方法,设置阈值。在这里您可以添加更多高级预处理方法(取决于您的OCR的具体应用),不过这超出了本文的范围。

行22-24上的if语句执行阈值,以便从背景分割前景。我们使用cv2.THRESH_BINARY和cv2.THRESH_OTSU标志来执行此操作。有关Otsu方法的详细信息,请参阅官方OpenCV文档中的“Otsu二进制”。

稍后我们将在结果中看到,这种阈值方法可用于读取覆盖在灰色形状上的深色文本,或者,可以应用模糊方法。 28-29行在--preprocess标志设置为blur。应用blur可以帮助减少噪声,使Tesseract更容易正确地识别OCR图像。在预处理图像后,根据Python脚本的进程ID用os.getpi导出临时图像文件名。在使用pytesseract进行OCR之前的最后一步是将预处理的图像(灰色)写入磁盘,并使用上面的文件名保存它







请到「今天看啥」查看全文