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