项目前言
在处理大量图片时,若图片中包含特定的文本信息,且需依据这些信息对图片进行重命名,手动操作会既耗时又容易出错。借助 Python 和阿里云的 OCR(光学字符识别)服务,能够实现自动化的图片多区域 OCR 识别,进而根据识别结果对图片文件进行重命名。此方案不仅能提升工作效率,还可降低人为错误,适用于文档管理、图片整理等多种场景。

详细步骤

- 开通阿里云 OCR 服务:登录阿里云官网,开通 OCR 服务,并创建 AccessKey,以便后续调用 API。
- 安装必要的 Python 库 :使用
pip
安装aliyun-python-sdk-core
和aliyun-python-sdk-ocr
库。 - 编写 Python 代码:实现图片的 OCR 识别和文件重命名功能。
- 运行代码:将待处理的图片放在指定目录下,运行代码完成图片重命名。
代码实现
ocr-image-rename基于阿里云OCR的图片重命名脚本V1
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkocr.request.v20191230.RecognizeCharacterRequest import RecognizeCharacterRequest
# 配置阿里云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)
def ocr_image(image_path):
"""
对指定图片进行OCR识别
:param image_path: 图片文件路径
:return: 识别结果字符串
"""
with open(image_path, 'rb') as f:
image_content = f.read()
import base64
image_base64 = base64.b64encode(image_content).decode()
request = RecognizeCharacterRequest()
request.set_accept_format('json')
request.set_ImageBase64(image_base64)
try:
response = client.do_action_with_exception(request)
import json
result = json.loads(response)
text = ''.join([item['Text'] for item in result['Data']['PrismResultList']])
return text
except (ClientException, ServerException) as e:
print(f"OCR识别出错: {e}")
return None
def rename_images(folder_path):
"""
对指定文件夹下的图片进行OCR识别并重命名
:param folder_path: 图片文件夹路径
"""
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
image_path = os.path.join(folder_path, filename)
text = ocr_image(image_path)
if text:
new_filename = text + os.path.splitext(filename)[1]
new_file_path = os.path.join(folder_path, new_filename)
try:
os.rename(image_path, new_file_path)
print(f"已将 {filename} 重命名为 {new_filename}")
except FileExistsError:
print(f"文件 {new_filename} 已存在,跳过重命名")
except Exception as e:
print(f"重命名文件时出错: {e}")
if __name__ == "__main__":
folder_path = 'your_image_folder_path'
rename_images(folder_path)
生成 ocr_image_rename.py
总结
通过结合 Python 和阿里云的 OCR 服务,成功实现了图片多区域 OCR 识别并重命名图片文件的功能。该方案借助阿里云强大的 OCR 能力,能够准确识别图片中的文本信息,再利用 Python 的文件操作功能完成图片重命名。不过,在实际应用中可能会遇到一些问题,例如 OCR 识别不准确、图片文件重名等,需要根据具体情况进行处理。同时,要注意保护好阿里云的 AccessKey 信息,避免泄露。