美文网首页Python学习日志程序员程序猿阵线联盟-汇总各类技术干货
Python网络数据采集之图像识别与文字处理|第10天

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

作者: 你好我是森林 | 来源:发表于2018-04-15 18:01 被阅读189次

    User:你好我是森林
    Date:2018-04-15
    Mark:《Python网络数据采集》

    网络采集系列文章

    Python网络数据采集之创建爬虫
    Python网络数据采集之HTML解析
    Python网络数据采集之开始采集
    Python网络数据采集之使用API
    Python网络数据采集之存储数据
    Python网络数据采集之读取文件
    Python网络数据采集之数据清洗
    Python网络数据采集之处理自然语言
    Python网络数据采集之登录采集处理
    Python网络数据采集之采集JavaScript

    图像识别与文字处理

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

    OCR库概述

    Python常用的OCR库有两个:PillowTesseract。每个库都可以从它们的网站上下载并安装(http://pillow.readthedocs.org/installation.html
    https://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:[点击下载安装](https://code.google.com/p/tesseract-ocr/ downloads/list)

    Linux:sudo apt-get tessertact-ocr

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

    NumPy

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

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

    处理格式规范的文字

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

    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 处理之前,那些带标题的、带有大片空白的图片,或者有其他问题的图 片,都应该做预处理。

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

    原文地址:https://chensenlin.cn/posts/55181/

    欢迎你免费加入我的星球,一起分享,共同成长。

    知识星球

    相关文章

      网友评论

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

      本文链接:https://www.haomeiwen.com/subject/bnxjkftx.html