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

本文介绍了一种使用Python批量读取指定目录下所有图片,并利用百度图片转文字API提取图片中的文字信息,特别关注提取手机号码,最后将提取的文字信息保存至记事本的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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("结束!")

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萤火的微亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值