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

相关推荐
L_cl9 分钟前
【NLP 36、CRF条件随机场 —— 源码解读】
人工智能·python·自然语言处理
NEET_LH23 分钟前
Python个人学习笔记(14):函数(匿名函数、内置函数(下)、三元表达式)
笔记·python·学习
xinxiyinhe33 分钟前
Python从基础开发到前沿技术完整生态(应用&技术栈)(2025版)
python·django·flask
君科程序定做1 小时前
Insar结合ISCE2,某一个文件进行并行-stackSentinel.py
linux·python
小喵要摸鱼2 小时前
【Python LeetCode 专题】排序算法
python·leetcode·排序算法
弧襪2 小时前
基于Flask的Web应用开发
前端·python·flask
databook2 小时前
『Plotly实战指南』--架构与设计理念
python·数据分析·数据可视化
qq_白羊座2 小时前
几种常见的虚拟环境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的区别和特点总结
python·virtualenv
精灵vector2 小时前
LangGraph 构建的工作流调用数据库的时候怎么添加重试机制
人工智能·python·aigc