Python调用百度图片转文字api提取出图片中的文字

 Python读取电脑指定目录文件夹下的所有图片,并且调用百度图片转文字api提取出图片中的手机号保存到记事本

""" 2020年6月6日    Niu """

import os
import json
from aip import AipOcr
import re

""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        content = fp.read()
        fp.close()
        return content

# 把文本保存到记事本
def saveCon(con, root):
    # with open(root, mode='w') as f:
    with open(root, mode='a') as f:
        f.write(con)
        f.close()

# 图片路径
def BaiDuApi(filePath):
    con = []
    try:
        client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
        image = get_file_content(filePath)
        """ 如果有可选参数 """
        options = {}
        options["recognize_granularity"] = "big"  # 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
        options["vertexes_location"] = "false"  # 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
        options["probability"] = "false"  # 是否返回识别结果中每一行的置信度
        """ 带参数调用通用文字识别(含位置信息版), 图片参数为本地图片 """
        # content = client.general(image, options)
        #  通用文字识别
        content = client.basicGeneral(image, options)
        jcon = json.dumps(content, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
        jcontent = json.loads(jcon)
        print(jcontent)
        for i in jcontent['words_result']:
            con.append(json.loads(json.dumps(i))['words'])
    except:
        print("错误")
    return con

# 处理字符串
def strpd(str):
    try:
        pattern = re.compile(r'(13\d{9}|14[5|7]\d{8}|15\d{9}|166{\d{8}|17[3|6|7]{\d{8}|18\d{9})')
        index = 0
        matchResult = pattern.search(str, index)  # 从指定位置开始匹配
        # print(matchResult.group(0))
        str = matchResult.group(0) + "\n"
    except:
        print("错误")
        str = ""

    return str

def PictureToText(file_path):  # 图片转文字和公式 path图片地址
    str = ""
    con = BaiDuApi(file_path)
    # print(con)
    if con == []:
        return file_path + "\n"
    for co in con:
        str = str + co + ","
    # 提取手机号
    str = strpd(str)
    print("手机号:"+str)
    if str == "":
        str = file_path + "\n"
    # print("图已转文字")
    return str

# file_path 要遍历的文件夹路径
# phones    提取的手机号
def List_file_path(file_path):
    phones = ""
    print("文件夹路径:"+file_path)
    path = file_path + ".txt"
    for root,dirs,files in os.walk(file_path):
        for file in files:
            #获取文件路径
            print(os.path.join(root,file))
            saveCon(PictureToText(os.path.join(root,file)), path)  # str 文本内容,path记事本位置,保存到记事本
            # phones = phones + PictureToText(os.path.join(root,file))
    # print(phones)
    # pathfile = file_path.split('.')[0:-1][0]

    # saveCon(phones, path)  # str 文本内容,path记事本位置,保存到记事本
    os.system("start explorer %s" % path)  # 打开这个文件
    return path

if __name__ == '__main__':
    # 文件夹路径
    file_path = "F:\";
    path = List_file_path(file_path)
    print("文本地址:" + path)
    a = input("结束!")

 

你可能感兴趣的:(Python)