专栏首页思考的代码世界Python网络数据采集之图像识别与文字处理|第10天

Python网络数据采集之图像识别与文字处理|第10天

图像识别与文字处理;

使用Pillow库和Tesseract

图像识别与文字处理

将图像翻译成文字一般被称为光学文字识别(Optical Character RecognitionOCR)。可以实现 OCR 的底层库并不多,目前很多库都是使用共同的几个底层 OCR 库,或者是在上面进行定制。

OCR库概述

Python常用的OCR库有两个:PillowTesseract。每个库都可以从它们的网站上下载并安装(http://pillow.readthedocs.org/installation.htmlhttps://pypi.python.org/pypi/pytesseract),或者用第三方管理器(像 pip)通过“pillow”“pytesseract”进行安装。

Pillow

Pillow 是从 Python 2.x版本的 Python图像库(Python Imaging LibraryPIL)分出来的,支持Python 3.x版本。和PIL一样,Pillow也可以轻松地导入代码,并通过大量的过滤、修饰甚至像素级的变换操作处理图片:

from PIL import Image,ImageFilter

kitten = Image.open("demo.jpg")#打开图片
blurryKitten = kitten.filter(Imagefilter.GaussianBlur)
blurryKitten.save("demo_two.jpg")#另存为
blurryKitten.show()

Tesseract

Tesseract 是目前公认最优秀、最精确的开源 OCR 系统。Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体,也可以识别出任何Unicode字符。

Tesseract 是一个 Python的命令行工具,不是通过 import语句导入的库。安装之后,要用 tesseract 命令在Python的外面运行。

安装 Tesseract

Windows:点击下载安装

Linux:sudo apt-get tessertact-ocr

Mac: brew install tesseract;也可以下载源码安装

NumPy

NumPy 是一个非常强大的库,具有大量线性代数 以及大规模科学计算的方法。因为NumPy可以用数学方法把图片表示成巨大的像素数组,所以它可以流畅地配合 Tesseract 完成任务。

NumPy 可以通过第三方包管理器(比如 pip)来安装:pip install numpy

处理格式规范的文字

例如通过运行Tesseract,读取文件并把结果写到一个文本文件中:

1

tesseract text.tif textoutput | cat test.txt

Tesseract 最大的缺点是对渐变背景色的处理。利用Pillow 库,我们可以创建一个阈值过滤器来去掉渐变的背景色,只把文字留下来,从而让图片更加清晰,便于 Tesseract 读取:

from PIL import Image
import subprocess
def cleanFile(filePath, newFilePath): 
    image = Image.open(filePath)
    # 对图片进行阈值过滤,然后保存
    image = image.point(lambda x: 0 if x<143 else 255)
    image.save(newFilePath)
    # 调用系统的tesseract命令对图片进行OCR识别 
    subprocess.call(["tesseract", newFilePath, "output"])
    # 打开文件读取结果
    outputFile = open("output.txt", 'r') 
    print(outputFile.read())
    outputFile.close()

cleanFile("text_2.jpg", "text_2_clean.png")

在提交给 Tesseract 处理之前,那些带标题的、带有大片空白的图片,或者有其他问题的图 片,都应该做预处理。

今天的内容没有特别难,我写的比较简单,爬取网络的图片和验证码识别还没写,先从简单的消化。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python网络数据采集之图像识别与文字处理|第10天

    将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现 OCR 的底层库并不多,目前很多库都是使...

    你好我是森林
  • Python网络数据采集之采集JavaScript|第09天

    客户端脚本语言是运行在浏览器而非服务器上的语言。客户端语言成功的前提是浏览器拥有正确地解释和执行这类语言的能力。

    你好我是森林
  • Python网络数据之用爬虫测试网站|第11天

    你好我是森林
  • 教程 | Adrian小哥教程:如何使用Tesseract和OpenCV执行OCR和文本识别

    本教程将介绍如何使用 OpenCV OCR。我们将使用 OpenCV、Python 和 Tesseract 执行文本检测和文本识别。

    机器之心
  • 编程珠玑II C12笔记: rand num generator

    刘笑江
  • XtraBackup 的流式和压缩备份

    Streaming mode, supported by Percona XtraBackup, sends backup to STDOUT in speci...

    wubx
  • 软件评测师笔记(四)—— 操作系统

    高级语言源程序中的错误分为两类:语法错误和语义错误,其中语义错误可分为静态语义和动态语义错误

    小菠萝测试笔记
  • 怎样用Python提取图片中的文字

    有时候在爬取数据的时候,需要读取网页中图片中的信息。在读取和处理图像、图像相关的机器学习以及创建图像等任务中,Python一直都是非常出色的语言。有两个库非常流...

    TalkPython
  • NSA 的 Python 手册

    Python 开发者现在可以观摩下美国情报机构 NSA 是如何培训 Python 程序员的。软件工程师 Chris Swenson 根据信息自由法案递交申请,要...

    Debian社区
  • Qt文本设置下划线

      另外Qt的大部分widgets系列类中带有文本显示的都可以使用上述方法,比如:QPushButton,QLineEdit等等。

    Qt君

扫码关注云+社区

领取腾讯云代金券