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

相关推荐
2401_897930063 分钟前
tensorflow常用使用场景
人工智能·python·tensorflow
酷飞飞2 小时前
错误是ModuleNotFoundError: No module named ‘pip‘解决“找不到 pip”
人工智能·python·pip
点云SLAM3 小时前
PyTorch 中.backward() 详解使用
人工智能·pytorch·python·深度学习·算法·机器学习·机器人
B1118521Y463 小时前
flask的使用
后端·python·flask
Learn Beyond Limits4 小时前
Transfer Learning|迁移学习
人工智能·python·深度学习·神经网络·机器学习·ai·吴恩达
love530love6 小时前
【保姆级教程】阿里 Wan2.1-T2V-14B 模型本地部署全流程:从环境配置到视频生成(附避坑指南)
人工智能·windows·python·开源·大模型·github·音视频
He1955016 小时前
Go初级之十:错误处理与程序健壮性
开发语言·python·golang
和鲸社区7 小时前
《斯坦福CS336》作业1开源,从0手搓大模型|代码复现+免环境配置
人工智能·python·深度学习·计算机视觉·语言模型·自然语言处理·nlp
豌豆花下猫7 小时前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
THMAIL8 小时前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm