校园AI Day的AI工作坊任务为:用OCR技术识别30张交付验收单的铁塔名称,实现图片重命名。方案采用PaddleHUB+后处理,低代码实现,准确率100%。实施含数据准备(上传至指定路径)、环境准备(安装相关库)、执行输出(定义函数提取名称并遍历重命名至输出目录)。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

任务描述:在实际的工作中,有时候需要根据图片中的指定区域进行重命名,通过OCR技术实现可自主框选识别区,实现识别内容的精确提取。本任务提供30张交付验收单,需要通过OCR技术识别图片中的铁塔名称,并根据该字段完成对图片的重命名
参考《多模态技术在金融场景创新实践:表单识别》
#创建文件夹,上传数据#!mkdir work/data!tree work/data
#安装 paddlehub!pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple !pip install paddlehub==2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
#定义获取名称函数import paddlehub as hubimport cv2
ocr = hub.Module(name="ch_pp-ocrv3")
def get_name(fn):
img = cv2.imread(fn)
result = ocr.recognize_text(images=[img])
#1找到铁塔名称
indx = 0
r_data = result[0]['data'] for i in range(len(r_data)): if '塔名称' in r_data[i]['text']: #print(r_data[i]['text_box_position'])
indx = i break
#2找到铁塔名称
#垂直方向加权,铁塔名称答案在一条直线上
weight_y = 4
#找到离铁塔名称最近的识别框
p_x = (r_data[indx]['text_box_position'][1][0] + r_data[indx]['text_box_position'][2][0])/2
p_y = (r_data[indx]['text_box_position'][1][1] + r_data[indx]['text_box_position'][2][1])/2
min_d = p_x + p_y
name_idx = 0
for i in range(len(r_data)): #排除自己
if i == indx: continue
x = (r_data[i]['text_box_position'][0][0] + r_data[i]['text_box_position'][3][0])/2
y = (r_data[i]['text_box_position'][0][1] + r_data[i]['text_box_position'][3][1])/2
dis = abs(p_x-x) + abs(p_y - y)*weight_y #print('{0}:{1}'.format(dis,r_data[i]['text']))
if dis < min_d:
min_d = dis
name_idx = i
name = r_data[name_idx]['text']
#3搜索夸行问题
weight_x =1
#底部两个点中点
p_x = (r_data[name_idx]['text_box_position'][2][0] + r_data[name_idx]['text_box_position'][3][0])/2
p_y = (r_data[name_idx]['text_box_position'][2][1] + r_data[name_idx]['text_box_position'][3][1])/2
min_d = 20 # 距离小于20存在跨行
for i in range(len(r_data)): #排除自己
if i == name_idx: continue
x = (r_data[i]['text_box_position'][0][0] + r_data[i]['text_box_position'][1][0])/2
y = (r_data[i]['text_box_position'][0][1] + r_data[i]['text_box_position'][1][1])/2
dis = abs(p_x-x)*weight_x + abs(p_y - y) #print('{0}:{1}'.format(dis,r_data[i]['text']))
if dis < min_d:
name += r_data[i]['text']
break
return name#遍历重命名文件!mkdir work/outputimport os
img_dir = 'work/data'output_dir = 'work/output'for pic in os.listdir(img_dir):
fn = os.path.join(img_dir,pic)
name = get_name(fn) print('{0}:{1}'.format(fn,name)) import shutil
shutil.copy(fn,os.path.join(output_dir,name + fn[-9:]))以上就是【校园AI Day-AI workshop】自定义区域OCR识别文件重命名的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号