当前位置: 首页 > news >正文

软件工具:批量图片区域识别+重命名文件的方法,发票识别和区域选择方法参考,基于阿里云实现

基于阿里云的批量图片区域识别与重命名解决方案

图像识别重命名

应用场景

  1. ​企业档案管理​​:批量处理扫描的合同、文件等图片,根据合同编号、文件标题等关键信息重命名文件
  2. ​医疗影像处理​​:识别X光、CT等医学影像中的患者ID、检查日期等信息进行重命名
  3. ​财务票据管理​​:批量识别发票中的机器编号、发票号码等关键字段作为文件名
  4. ​政务文档处理​​:对公文扫描件中的文号、日期等关键信息进行提取和重命名

界面设计

主界面元素

  1. ​文件选择区域​​:按钮或拖放区域用于选择图片/PDF文件
  2. ​区域选择工具​​:可视化工具用于框选识别区域(支持多区域选择)
  3. ​OCR设置面板​​:阿里云OCR服务配置(API密钥、区域等)
  4. ​重命名规则设置​​:定义如何将识别文本转换为文件名(可添加前缀、后缀等)
  5. ​处理进度显示​​:实时显示处理进度和结果
  6. ​结果预览区​​:显示识别结果和重命名前后的文件名对比

详细实现步骤

1. 准备工作

import os from aliyunsdkcore.client import AcsClient from aliyunsdkocr.request.v20191230.RecognizeCustomRequest import RecognizeCustomRequest from PIL import Image import base64 import string # 配置阿里云AccessKey access_key_id = 'your_access_key_id' access_key_secret = 'your_access_key_secret' region_id = 'cn-hangzhou' # 根据实际情况选择地域 # 创建AcsClient实例 client = AcsClient(access_key_id, access_key_secret, region_id)

2. 核心识别函数

def recognize_text_in_area(image_path, area): """识别图片指定区域的文字内容""" try: # 读取图片并进行base64编码 with open(image_path, 'rb') as f: image_data = f.read() image_base64 = base64.b64encode(image_data).decode('utf-8') # 构建OCR请求 request = RecognizeCustomRequest() request.set_accept_format('json') request.set_ImageData(image_base64) # 设置自定义识别区域 (left, top, right, bottom) left, top, right, bottom = area request.set_Configure(f'{{"minHeight":10,"outputCharInfo":false,"outputTable":false,"outputQuad":false,"skipDetection":false,"area":{"left":{left},"top":{top},"width":{right-left},"height":{bottom-top}}}}') # 发起请求并解析结果 response = client.do_action_with_exception(request) result = json.loads(response.decode('utf-8')) return result['Data']['Content'] except Exception as e: print(f"识别失败: {str(e)}") return ""

3. 批量处理函数

def batch_rename_images(image_folder, area): """批量处理图片文件夹中的图片""" valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits) for filename in os.listdir(image_folder): if filename.lower().endswith(('.png', '.jpg', '.jpeg')): image_path = os.path.join(image_folder, filename) # 识别指定区域文字 text = recognize_text_in_area(image_path, area) if not text: continue # 生成合法文件名 new_filename = ''.join(c for c in text if c in valid_chars).strip() new_filename = new_filename[:50] + os.path.splitext(filename)[1] # 限制长度 # 执行重命名 new_image_path = os.path.join(image_folder, new_filename) os.rename(image_path, new_image_path) print(f"已将 {filename} 重命名为 {new_filename}")

4. 使用示例

# 使用示例 image_folder = 'your_image_folder_path' # 替换为实际的图片文件夹路径 area = (100, 100, 300, 200) # 替换为实际的指定区域坐标(left, top, right, bottom) batch_rename_images(image_folder, area)

优化建议

  1. ​区域选择优化​​:实现可视化区域选择工具,让用户可以直接在图片上框选区域
  2. ​批量处理性能​​:使用多线程/多进程加速大批量图片处理
  3. ​文件名冲突处理​​:当识别内容相同导致文件名冲突时,自动添加序号区分
  4. ​日志记录​​:记录处理日志,便于追踪问题和恢复
  5. ​格式支持扩展​​:增加对PDF文件的支持,特别是图片型PDF
  6. ​预处理优化​​:对图片进行自动旋转、去噪等预处理,提高OCR准确率
  7. ​规则模板​​:提供常用场景的预设模板(如发票识别、合同识别等)

总结

本方案基于阿里云OCR服务实现了高效的批量图片区域识别与重命名功能,特别适合处理大量需要结构化命名的图片文件。通过自定义识别区域,可以精准提取图片中的关键信息作为文件名,大幅提升文件管理效率。实际应用中可根据具体需求扩展更多功能,如多区域识别、结果导出Excel等。

http://www.xdnf.cn/news/508447.html

相关文章:

  • SuperYOLO:多模态遥感图像中的超分辨率辅助目标检测之论文阅读
  • 05 部署Nginx反向代理
  • Flink Table SQL
  • [SpringBoot]Spring MVC(4.0)
  • TASK03【Datawhale 组队学习】搭建向量知识库
  • 【图像处理基石】OpenCV中都有哪些图像增强的工具?
  • 护网行动——蓝队防守方案指南
  • AI写PPT可以用吗?我测试了3款AI写PPT工具,分享感受
  • Vue 3.0 中的slot及使用场景
  • 【通用智能体】Playwright:跨浏览器自动化工具
  • 微信小程序 地图 使用 射线法 判断目标点是否在多边形内部(可用于判断当前位置是否在某个区域内部)
  • C语言内存函数与数据在内存中的存储
  • ctr查看镜像
  • 掌握版本控制从本地到分布式
  • flat_map, flat_set, flat_multimap, flat_multimap
  • 深入理解位图(Bit - set):概念、实现与应用
  • python中http.cookiejar和http.cookie的区别
  • 深入解析Spring Boot与Kafka集成:构建高性能消息驱动应用
  • 【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer
  • 【云原生架构反模式】常见误区与解决方案
  • WPS多级标题编号以及样式控制
  • ES(ES2023/ES14)最新更新内容,及如何减少内耗
  • 大模型微调:从基础模型到专用模型的演进之路
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
  • 为新装的Linux系统配置国内yum源(阿里源)
  • 19. 结合Selenium和YAML对页面实例化PO对象改造
  • 大数据场景下数据导出的架构演进与EasyExcel实战方案
  • 理想AI Talk第二季-重点信息总结
  • 【架构美学】Java 访问者模式:解构数据与操作的双重分发哲学
  • 基于单片机路灯自动控制仪仿真设计