天天看点

Python3.6实现图片转文字

前言:因项目所需,要对图片进行基本的文字识别,联想到手机qq有图片自动提取文字功能,觉得肯定有可以调用的外部api。查了一下,比较常用的python实现图片转文字的库是pytesseract(第一反应联想到漫威中的宇宙魔方Tesseract哈哈哈哈)

摘要:主要利用Python的第三方库pytesseract,实现图片转文字。但转换效率一般,且有一定的错误,并带有许多空行。可适用于获取图片中的文字,但阅读性不佳。

实验环境:

win10+pycharm2018.1+python3.6

所需库:

Pillow             4.3.0

pytesseract        0.2.0

安装都很简单,在cmd命令行里直接pip3 install xxxxx就行。

敲黑板,安装完库还不行,还要安装tesseract的软件,这样系统才能识别引擎成功读取文字。

可从github下载tesseract-ocr-setup-4.00.00dev

https://github.com/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows

Python3.6实现图片转文字

安装的时候要注意,tesseract的安装并不默认安装什么语言,如果自己需要简体中文的语言包,那么就不能一直点next点到finish。如下图,我安装了MATH和简体中文包。

Python3.6实现图片转文字
Python3.6实现图片转文字

好了进行完上述预备阶段的任务,代码就很简单了。

import pytesseract
from PIL import Image
import datetime


def main():
    for i in range(1,2):
        starttime = datetime.datetime.now()
        image = Image.open(r"C:\Users\夹心\Desktop\计算机网络_"+str(i)+".png")
        text = pytesseract.image_to_string(image, )  # 使用简体中文解析图片
        endtime = datetime.datetime.now()

        print (r"计算机网络_"+str(i)+r"转换完成,耗时:" + str((endtime - starttime).seconds))

        text=text.replace(" ","")
        with open(r"C:\Users\夹心\Desktop\计算机网络_"+str(i)+".txt", "a") as f: # 将识别出来的文字存到本地
            # print(text)
            f.write(str(text))

main()
           

几点注意:

1.转换的速度相对较慢,不是很乐观。如图这样一张字比较密集的图片,转换用时约14s。程序中的datatime库就是为了计算转换用时而设定的。速度的慢体现在批量转换上,并未找到很合适的优化方法。

Python3.6实现图片转文字

2.转化的正确率并非100%。尽管对于图中这样的标准系统字体,转换成功率仍难以达到100%,如单播会被转换成单擎等。

3.转化后的txt有许多空行,非常影响阅读体验,可以自己设计代码改善一下。因为我要做的是分词,所以空行没有什么妨碍,所以我没有进行处理。

Python3.6实现图片转文字

以上就是python实现图片转文字的讲解。