图片OCR多区域识别并重命名图片文件,基于Python和阿里云的实现方案

项目前言

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

详细步骤

  1. 开通阿里云 OCR 服务:登录阿里云官网,开通 OCR 服务,并创建 AccessKey,以便后续调用 API。
  2. 安装必要的 Python 库 :使用pip安装aliyun-python-sdk-corealiyun-python-sdk-ocr库。
  3. 编写 Python 代码:实现图片的 OCR 识别和文件重命名功能。
  4. 运行代码:将待处理的图片放在指定目录下,运行代码完成图片重命名。

代码实现

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 信息,避免泄露。

相关推荐
南部余额43 分钟前
Python OOP核心技巧:如何正确选择实例方法、类方法和静态方法
开发语言·python
2303_Alpha1 小时前
深度学习入门:深度学习(完结)
人工智能·笔记·python·深度学习·神经网络·机器学习
深度学习入门2 小时前
机器学习,深度学习,神经网络,深度神经网络之间有何区别?
人工智能·python·深度学习·神经网络·机器学习·机器学习入门·深度学习算法
森哥的歌3 小时前
Python uv包管理器使用指南:从入门到精通
python·开发工具·uv·虚拟环境·包管理
qq_214782613 小时前
给你的matplotlib images添加scale Bar
python·数据分析·matplotlib
Johny_Zhao3 小时前
Vmware workstation安装部署微软SCCM服务系统
网络·人工智能·python·sql·网络安全·信息安全·微软·云计算·shell·系统运维·sccm
waterHBO3 小时前
python + flask 做一个图床
python
ZWaruler4 小时前
二: 字典及函数的使用
python
蚰蜒螟4 小时前
深入解析JVM字节码解释器执行流程(OpenJDK 17源码实现)
开发语言·jvm·python
墨绿色的摆渡人4 小时前
pytorch小记(二十):深入解析 PyTorch 的 `torch.randn_like`:原理、参数与实战示例
人工智能·pytorch·python