form1.cn
Make a little progress every day

Python批量识别目录中所有图片中的所有文字

11th of May 2020 Linux py 3350

Python批量识别目录中所有图片中的所有文字并保存到txt文档中


第一步安装所需要的库(我使用的是python 3.6)

1
2
pip install Pillow
pip install pytesseract


第二步下载tesseract.exe文件

1
2
源码:https://github.com/tesseract-ocr/tesseract(无需下载)
下载地址:https://digi.bib.uni-mannheim.de/tesseract/


第三步安装tesseract

1
双击下载的安装文件,安装到你的电脑(我安装在:E:\Program Files\Tesseract-OCR)


第四步配置环境变量(必须否则会报错)

1
2
变量名:TESSDATA_PREFIX
变量值:E:\Program Files\Tesseract-OCR\tessdata


第五步修改pytesseract.py(必须否则会报错)

1
2
3
4
5
6
打开
C:\python36\Lib\site-packages\pytesseract\pytesseract.py
里面大概在24或26行
tesseract_cmd = 'tesseract'
改为
tesseract_cmd = 'E:/Program Files/Tesseract-OCR/tesseract.exe'


第六步下载中文字体包(如果你要识别中文的话)

1
2
3
https://github.com/tesseract-ocr/tessdata
找到chi_sim.traineddata,下载到本地后存放到E:\Program Files\Tesseract-OCR\tessdata目录
运行 E:\Program Files\Tesseract-OCR\tesseract --list-langs 可以查看你目前支持的字体库


第七步上代码如下:

'''
    Python批量识别
    目录中所有图片中的所有文字
    并保存到txt文档中
'''

from PIL import Image
import pytesseract
import string,re,os

def imgtostr(imgpath):
    '''识别图片中的所有文字'''
    image = Image.open(imgpath)
    text=pytesseract.image_to_string(image,lang='chi_sim') #调用识别引擎识别
    text=text.replace("\n","") #去换行
    return text
    
def writefile(path,strstr):
    '''将文字累加写入txt文档'''
    with open(path+'/word.txt',"a", encoding= "utf-8") as f:
    f.write(strstr)
    f.write("\n\n")


if __name__ == '__main__':

    print("\n")
    path = input('请输入要识别的图片目录:')
    print("\n.................start\n")
    
    for foldName, subfolders, filenames in os.walk(path):
        toltal = 0
        for fe in filenames:
            grpaimg = path + '/' + fe
            print(grpaimg)
            textddd = imgtostr(grpaimg)
            writefile(path,grpaimg+":\n"+textddd)
            print(textddd, end="\n\n")
    
    print(".................end")