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

相关推荐
精灵vector1 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习1 小时前
Python入门Day2
开发语言·python
Vertira1 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉1 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗2 小时前
黑马python(二十四)
开发语言·python
晓13132 小时前
OpenCV篇——项目(二)OCR文档扫描
人工智能·python·opencv·pycharm·ocr
是小王同学啊~2 小时前
(LangChain)RAG系统链路向量检索器之Retrievers(五)
python·算法·langchain
AIGC包拥它2 小时前
提示技术系列——链式提示
人工智能·python·langchain·prompt
孟陬2 小时前
Python matplotlib 如何**同时**展示正文和 emoji
python
何双新3 小时前
第 1 课:Flask 简介与环境配置(Markdown 教案)
后端·python·flask