logo

Python实战:利用百度OCR批量修改证件照文件名

作者:很酷cat2024.08.29 15:08浏览量:11

简介:本文介绍如何使用Python结合百度OCR(光学字符识别)技术,实现批量读取证件照中的文字信息,并根据这些信息自动修改文件名,提升文件管理的效率与准确性。适合处理大量含有身份信息的证件照,如身份证、护照等。

引言

在日常办公或数据整理中,我们经常需要处理大量的证件照,如身份证、护照等,并希望根据证件上的信息(如姓名、身份证号)来命名或分类这些照片。手动操作不仅耗时耗力,还容易出错。幸运的是,随着AI技术的发展,我们可以利用百度OCR(Optical Character Recognition,光学字符识别)技术来自动化这一过程。

准备工作

1. 安装必要的库

首先,确保你的Python环境已安装requestsPillow库,用于发送HTTP请求和图片处理。同时,你需要安装百度AI开放平台的SDK,但在这里我们直接通过HTTP API调用。

  1. pip install requests Pillow

2. 注册百度AI开放平台账号

访问百度AI开放平台,注册账号并创建应用,获取API KeySecret Key

3. 获取Access Token

使用API KeySecret Key获取Access Token,它是调用OCR API的必需凭证。

  1. import requests
  2. import json
  3. def get_access_token(api_key, secret_key):
  4. url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={api_key}&client_secret={secret_key}"
  5. response = requests.get(url)
  6. result = json.loads(response.text)
  7. return result['access_token']
  8. # 替换为你的API Key和Secret Key
  9. api_key = '你的API_KEY'
  10. secret_key = '你的SECRET_KEY'
  11. token = get_access_token(api_key, secret_key)

实现OCR识别

编写OCR识别函数

使用获取到的Access Token调用百度OCR API,对图片进行文字识别

  1. def ocr_image(token, image_path):
  2. url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic'
  3. headers = {'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': f'Bearer {token}'}
  4. params = {"url": image_path}
  5. # 注意:这里仅为示例,实际中可能需要将图片文件转换为Base64或上传至服务器后传入URL
  6. # 由于直接传入图片URL可能受限,这里假设已有图片URL或已处理为Base64编码
  7. # 这里使用伪代码展示处理流程
  8. # response = requests.post(url, data=params, headers=headers)
  9. # result = json.loads(response.text)
  10. # return result
  11. # 伪返回示例
  12. return {"words_result": [{"words": "张三"}, {"words": "123456789012345678"}]}
  13. # 示例调用
  14. # result = ocr_image(token, 'path_to_your_image.jpg')
  15. # print(result)

批量修改文件名

遍历文件夹中的图片文件

```python
from PIL import Image
import os

def rename_images_in_folder(folder_path, token):
for filename in os.listdir(folder_path):
if filename.lower().endswith((‘.png’, ‘.jpg’, ‘.jpeg’)):
image_path = os.path.join(folder_path, filename)
result = ocr_image(token, image_path) # 这里需要实际实现OCR识别

  1. # 假设结果中的第一个词是姓名,第二个词是身份证号
  2. if result and len(result['words_result']) > 1:
  3. new_name = f"{result['words_result'][0]['words']}_{result['words_result'][1]['words']}.jpg"
  4. new_path = os.path.join(folder_path,

相关文章推荐

发表评论