OCR指定区域图片自动识别内容重命名软件使用教程

软件界面如下:

使用步骤:导入文件夹或者文件,支持jpg,bmp和png三种格式点击开始命名即可

使用注意:

(1)点击工具-取模板,选择一个图片划定自己想要识别的区域,然后点击保存模板

(2)如果OCR没有识别到,则文件名不会命名

(3)如果勾选去除特殊字符,则命名前会去掉非法文件名字符比如:/\>等,如果不勾选,则不会命名,因为识别结果里面特殊字符不能给文件命名

(4)使用前请注意备份文件,以防命名后文件名无法恢复原来文件名

<think>我们有一个任务:使用EasyOCR图片中提取批号、厂家和品名,然后根据这些信息重命名图片文件。 步骤: 1. 安装EasyOCR使用pip安装easyocr包。 2. 编写脚本: a. 导入必要的库:easyocr, os, re(可能用于字符串处理)等。 b. 初始化EasyOCR的reader对象,指定语言(中文和英文,因为可能包含中文和英文字符)。 c. 遍历指定目录下的图片文件(如.jpg, .png等)。 d. 对每张图片使用EasyOCR进行文字识别。 e. 从识别结果中提取我们需要的信息:批号、厂家、品名。注意:识别结果是一个列表,每个元素是一个包含位置、文字和置信度的元组。我们需要的是文字部分。 f. 如何提取特定信息?这是一个难点,因为OCR返回的是图片中所有的文字,我们需要从中找到批号、厂家和品名。我们可以尝试以下方法: - 使用正则表达式匹配可能符合批号格式的字符串(比如包含数字和字母的组合,可能有固定的前缀或长度)。 - 厂家和品名可能是连续的文本,我们可以通过关键词来定位(例如“厂家:”、“品名:”等),但实际图片中可能没有这样的固定格式。 g. 因此,我们需要用户提供一些模式或者规则,或者我们假设图片中的文字布局是固定的(例如批号在某个位置,厂家在另一个位置)。但这样鲁棒性不高。 h. 另一种思路:我们可以训练一个模型来识别这些实体,但任务要求用EasyOCR,所以我们只能通过文本处理来提取。 考虑到实际情况,我们可能需要用户自定义规则,比如: - 批号可能是由数字和字母组成的特定长度的字符串,且出现在图片的特定区域(比如顶部或底部)。 - 厂家和品名可能出现在图片的某个区域,并且有固定的关键词。 由于问题中没有提供图片的具体样式,我们假设图片中包含了批号、厂家和品名,并且它们的位置相对固定。我们可以通过设置感兴趣区域(ROI)来分别提取不同区域的信息,但这需要知道图片的布局。 在没有布局信息的情况下,我们可以尝试在整个文本中搜索关键词。例如: - 批号:可能包含“批号”、“批”、“LOT”等字样,后面跟着数字和字母的组合。 - 厂家:可能包含“厂”、“公司”、“生产商”等字样。 - 品名:可能包含“品名”、“名称”、“商品名”等字样。 然后,我们可以设计正则表达式来提取这些信息。 3. 根据提取到的信息,构建新的文件名:批号+品名-厂家名称(注意去除非法文件名字符)。 4. 重命名图片文件。 由于不同的图片可能有不同的排版,这个脚本可能无法对所有图片都完美工作。因此,我们需要用户根据实际情况调整规则。 下面是一个示例脚本框架: 注意:由于EasyOCR识别中文需要下载模型,第一次运行时会自动下载,请确保网络畅通。 步骤详细代码: 1. 安装:在命令行中执行 `pip install easyocr` 2. 编写脚本(假设为rename_images.py):</think>以下是使用EasyOCR编写脚本提取图片中的批号、厂家和品名信息,并实现文件重命名的完整解决方案: ### 解决方案步骤 #### 1. 安装依赖库 ```bash pip install easyocr opencv-python ``` #### 2. Python脚本代码 ```python import easyocr import os import re import cv2 def extract_and_rename(image_folder): # 初始化EasyOCR阅读器(支持中英文) reader = easyocr.Reader(['ch_sim', 'en']) # 定义正则匹配规则 batch_pattern = re.compile(r'(批号|批次|LOT|Batch)[\s::]*([\w\d]+)') factory_pattern = re.compile(r'(厂家|制造商|生产商|Factory)[\s::]*([\u4e00-\u9fa5\w\d]+)') product_pattern = re.compile(r'(品名|产品名称|Product)[\s::]*([\u4e00-\u9fa5\w\d]+)') for filename in os.listdir(image_folder): if filename.lower().endswith(('.png', '.jpg', '.jpeg')): img_path = os.path.join(image_folder, filename) # 使用OpenCV读取图像(提高识别准确率) img = cv2.imread(img_path) # 执行OCR识别 results = reader.readtext(img, detail=0) full_text = " ".join(results) # 提取关键信息 batch_no = batch_pattern.search(full_text) factory = factory_pattern.search(full_text) product = product_pattern.search(full_text) # 构建新文件名 new_name = "" if batch_no: new_name += batch_no.group(2) + "_" if product: new_name += product.group(2) + "-" if factory: new_name += factory.group(2) # 处理未识别的情况 if not new_name: print(f"未识别到关键信息: {filename}") continue # 重命名文件 new_filename = f"{new_name}{os.path.splitext(filename)[1]}" os.rename(img_path, os.path.join(image_folder, new_filename)) print(f"已重命名: {filename} -> {new_filename}") if __name__ == "__main__": extract_and_rename("./images") # 替换为你的图片目录路径 ``` ### 关键功能说明 1. **OCR识别优化**: - 使用`cv2.imread()`代替直接路径读取,提高图像处理稳定性 - 同时启用中英文识别引擎(`ch_sim`和`en`) 2. **信息提取逻辑**: ```python # 批号识别(支持多种关键词) (批号|批次|LOT|Batch)[\s::]*([\w\d]+) # 厂家识别(匹配中文+数字/字母) (厂家|制造商|生产商|Factory)[\s::]*([\u4e00-\u9fa5\w\d]+) # 品名识别 (品名|产品名称|Product)[\s::]*([\u4e00-\u9fa5\w\d]+) ``` 3. **文件名格式**: `批号+品名-厂家名称` 示例: ``` A2023001_青霉素-北京制药厂.jpg ``` ### 使用说明 1. 创建图片目录(如`./images`) 2. 将脚本保存为`ocr_rename.py` 3. 运行命令: ```bash python ocr_rename.py ``` 4. 查看输出日志: ``` 已重命名: img001.jpg -> A2023001_青霉素-北京制药厂.jpg 已重命名: img002.jpg -> B2023002_阿司匹林-上海药业.jpg ``` ### 常见问题处理 - **识别率优化**: - 对于模糊图片,在OCR前添加图像预处理: ```python gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) ``` - 调整`reader.readtext()`参数: ```python results = reader.readtext(img, contrast_ths=0.3, adjust_contrast=0.7, width_ths=0.7) ``` - **特殊字符处理**: ```python # 在重命名前清理非法字符 new_filename = re.sub(r'[\\/*?:"<>|]', "", new_filename) ``` ### 性能建议 1. 批量处理100+图片时,启用GPU加速: ```python reader = easyocr.Reader(['ch_sim','en'], gpu=True) ``` 2. 对于固定格式图片,可添加ROI区域检测: ```python # 只检测图片特定区域(示例坐标) roi = img[100:500, 200:800] results = reader.readtext(roi) ``` > 注:实际识别效果取决于图片质量和文本清晰度,建议先在小样本上测试[^1]。正则表达式可根据实际出现的字段调整关键词列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值