import glob
from PIL import Image
import requests
import base64
import os
def PDF_OCR():
# 图片来源与储存地址,根据项目地址进行修改
source_dir = "C:\\Users\\****"
save_dir = "C:\\Users\\****"
# 如果保存目录不存在的话,进行目录新建
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 得到源数据的tif文件
files = glob.glob(source_dir + "*.tif")
# 更换图片.tif格式到.jpg(为了可以用AI接口识别)
for file in files:
image_name = save_dir + file[len(source_dir):-4] + '.jpg'
rgb_im = f.convert('RGB')
rgb_im.save(image_name, quality=95, subsampling=0) # 压缩比设置合适,提高准确性,subsampling常规值为0足够使用
# 调用通用文字识别接口(百度AI)功能识别非手写jpg图片里的文字,官网找合适自己项目的
# 输入请求接口
url = "https://aip.baidu******"
# 使用二进制打开jpg文件
jpg_files = glob.glob(save_dir + "*.jpg")
num = 1 # 对多图一样的情况都想保存
for file in jpg_files:
binary_file = open(file, 'rb')
binary_image = base64.b64encode(binary_file.read())
params = {
"image": binary_image
}
# access_token鉴权接口获取token
access_token = '************'
request_url = url + "?access_token=" + access_token
headers = {
'content-type': 'application/x-www-form-urlencoded'
}
response = requests.post(request_url, data=params, headers=headers)
if response:
msg = response.json()
# response.json()是字典的形式, 需要的字段在'words_result'里面,其value不唯一,我们进行提取工作
for i in msg["words_result"]:
if 'Cutting Voucher:' in i.get('words'):
print("获取Cutting Voucher成功")
print(i.get('words'))
new_pic_name = i.get('words')
break
# 由长度对要获取的名字进行验证,长度不正确或者包含特殊字符,修改图片名字为error
if len(new_pic_name) > 10 and new_pic_name[-10:-7] == "CUT" and new_pic_name[-7:].isdigit():
new_name = new_pic_name[-10:] + ".jpg"
# binary_file打开了文件,对文件重命名的话,会报错进程错误,故而先对文件关闭释放
binary_file.close()
if os.path.isfile(save_dir + new_name) is False: # 判断绝对路径下的文件是否存在,没有首次命名
os.rename(os.path.join(save_dir, file[len(save_dir):-4] + ".jpg"), os.path.join(save_dir, new_name))
print("success")
else:
os.rename(os.path.join(save_dir, file[len(save_dir):-4] + ".jpg"),
os.path.join(save_dir, new_pic_name[-10:] + "-" + f"{num}" + ".jpg"))
num = num + 1
print("muti-success")
else:
binary_file.close()
os.rename(os.path.join(save_dir, file[len(save_dir):-4] + ".jpg"),
os.path.join(save_dir, 'error_' + file[len(save_dir):-4] + ".jpg"))
print("fail to rename")
if __name__ == '__main__':
PDF_OCR()
打印机扫描件.tif格式转化为.jpg后,使用文字识别接口对非手写文字提取(python代码)
最新推荐文章于 2024-08-27 16:38:10 发布