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

相关推荐
apocelipes1 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
Geoking.2 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme2 小时前
java.text 包详解
java·开发语言·python
丁浩6663 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
B站_计算机毕业设计之家3 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
Q_Q5110082854 小时前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
鄃鳕4 小时前
python迭代器解包【python】
开发语言·python
懷淰メ4 小时前
python3GUI--模仿百度网盘的本地文件管理器 By:PyQt5(详细分享)
开发语言·python·pyqt·文件管理·百度云·百度网盘·ui设计
Q_Q5110082854 小时前
python基于web的汽车班车车票管理系统/火车票预订系统/高铁预定系统 可在线选座
spring boot·python·django·flask·node.js·汽车·php
新子y4 小时前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python