python爬虫学习第三十五天

xiaoxiao2021-02-27  169

今天继续昨天的课题:OCR

这次我们换一张相对模糊的图片,例如:

使用tesseract的stdout命令输出如下结果:

This is some text, written in Arial, Tesseract. Here are some

可以看到图片后面的单词明显没有被正确的识别,主要是因为图片背景色是渐变的,如果图片的渐变再加快加深,仅仅一个指令处理这张图片就远远不够了。

遇到这类问题,可以先用 Python 脚本对图片进行清理。利用 Pillow 库,我们可以创建一个 阈值过滤器来去掉渐变的背景色,只把文字留下来,从而让图片更加清晰,便于 Tesseract 读取

from PIL import Image def cleanFile(srcFile,newFile): image = Image.open(srcFile) image = image.point(lambda x:0 if x<120 else 255) image.save(newFile) print("process done!") pass cleanFile("C:/Users/gaoji/Documents/python/test2.jpg","C:/Users/gaoji/Documents/python/test3.png")

这段程序把原图片灰度低于120的部分全都变为0,120往上的全部变为255,并且将其存储为png格式原图片的背景深度还好,所以处理完后可以变成如下图片: 这样每行后面的内容tesseract解析起来就想多容易多了,解析后如下:

This is some text. written in Arial, that will be read by Tesseract Here are some symbols: !(@#$%*&*()

还是有些符号读的不完美,但绝大部分信息都被成功取出来了 在提交给 Tesseract 处理之前,那些带标题的、带有大片空白的图片,或者有其他问题的图 片,都应该做预处理

接下来我们要尝试把网络爬虫与tesseract结合起来,做一个相对大一点的东西,首先导航到亚马逊图书,托尔斯泰的《战争与和平》的大字号印刷版 , 打开阅读器,收集图片的 URL 链接,然后下载图片,识别图片,最后打印每个图片的文字。这是一个不小的工程,今天一天做不完,需要两天时间

今天先写到这里,打卡咯~

转载请注明原文地址: https://www.6miu.com/read-13594.html

最新回复(0)