一、项目背景
学校和教育机构经常需要处理学生的成绩单、报名表格、论文等 PDF 文件。例如,学校在统计学生成绩时,可以通过 OCR 识别从成绩单 PDF 中提取学生的姓名、学号、课程名称、成绩等信息,自动录入到 Excel 中进行成绩统计和分析。同时,根据成绩单 PDF 文件内容中的学生姓名和学期等标题信息,对文件进行重命名,便于学校进行成绩管理和存档。对于学生的论文,也可以通过这种方式提取关键信息并进行文件重命名,方便论文的评审和管理。
咕嘎批量OCR识别图片PDF多区域内容重命名导出表格系统
百度网盘:https://pan.baidu.com/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866
腾讯网盘:https://share.weiyun.com/a77jklXK
最新版公众号Timor君回复:【图片识别改名】图片
相关阅读:https://mp.weixin.qq.com/s/WBOb_vtb02PQX5B53UugUg
二、下面为大家分享完整的实现步骤:
要实现【全自动】批量 OCR 识别提取 PDF 指定区域内容到 Excel 以及根据 PDF 文件内容的标题来批量重命名,使用阿里云的方式可以通过以下几个主要步骤来完成,主要涉及到阿里云的 OCR 服务、函数计算(FC)等产品:
1. 开通相关阿里云服务
- 开通阿里云 OCR 服务:在阿里云控制台找到 OCR 服务并开通,根据业务需求选择合适的 OCR 识别套餐。
- 开通函数计算(FC)服务:函数计算用于自动化处理任务,在控制台开通并熟悉其基本操作。
- 开通对象存储服务(OSS):用于存储原始 PDF 文件、识别结果以及处理过程中的临时文件。
2. 准备工作
- 上传 PDF 文件到 OSS:将需要处理的 PDF 文件上传到指定的 OSS Bucket 中,方便后续函数计算进行访问。
- 创建 Excel 模板:在本地创建一个 Excel 模板,用于存储 OCR 识别后的数据。模板应包含与要提取内容对应的列标题。
3. 实现 OCR 识别功能
- 编写 OCR 识别代码:使用阿里云 OCR SDK(如 Python SDK)编写代码,实现对 PDF 文件指定区域的内容识别。例如,使用 Python SDK 的示例代码如下:
收起
python
from aliyunsdkcore.client import AcsClient from aliyunsdkocr.request.v20191230.RecognizePDFRequest import RecognizePDFRequest import json # 初始化AcsClient client = AcsClient('<your_access_key>', '<your_secret_key>', 'cn-hangzhou') # 替换为你的AccessKey和密钥,以及地域 # 创建OCR请求 request = RecognizePDFRequest() request.set_accept_format('json') # 设置PDF文件在OSS中的路径 request.set_OSSFileURL('oss://<your-bucket>/<your-pdf-file>') # 设置识别区域参数(根据实际需求调整) request.set_Regions(json.dumps([{"left": 100, "top": 100, "width": 200, "height": 200}])) # 发送请求并获取识别结果 response = client.do_action_with_exception(request) result = json.loads(response) # 处理识别结果,提取所需内容 extracted_data = result['Data']['Blocks']
- 部署函数计算:将上述 OCR 识别代码封装成一个函数,并部署到函数计算中。在函数计算中配置好所需的环境变量(如 AccessKey、SecretKey 等)。
4. 将识别内容写入 Excel
- 编写 Excel 写入代码:使用 Python 的
openpyxl
库编写代码,将 OCR 识别结果写入到 Excel 文件中。示例代码如下:
收起
python
from openpyxl import Workbook # 创建新的Excel工作簿 wb = Workbook() ws = wb.active # 写入表头 headers = ['Column1', 'Column2', 'Column3'] # 根据实际需求修改表头 ws.append(headers) # 写入识别数据 for data in extracted_data: row_data = [data['Content'], data['Confidence']] # 根据实际提取内容修改 ws.append(row_data) # 保存Excel文件到OSS wb.save('result.xlsx') # 使用OSS Python SDK将Excel文件上传到OSS import oss2 auth = oss2.Auth('<your_access_key>', '<your_secret_key>') bucket = oss2.Bucket(auth, 'oss-cn-hangzhou.aliyuncs.com', '<your-bucket>') bucket.put_object('result.xlsx', open('result.xlsx', 'rb'))
- 将 Excel 写入代码集成到函数计算中:在函数计算中调用上述代码,将识别结果写入 Excel 并保存到 OSS。
5. 根据 PDF 文件内容标题批量重命名
- 提取标题:在 OCR 识别过程中,从 PDF 内容中提取标题信息。可以根据特定的规则或关键词来定位标题。
- 重命名文件:使用 OSS Python SDK 编写代码,根据提取的标题对 PDF 文件进行重命名。示例代码如下:
收起
python
import oss2 # 初始化OSS认证 auth = oss2.Auth('<your_access_key>', '<your_secret_key>') bucket = oss2.Bucket(auth, 'oss-cn-hangzhou.aliyuncs.com', '<your-bucket>') # 获取原始PDF文件名 original_filename = '<your-pdf-file>' # 假设已经提取到标题 new_title = 'new_title.pdf' # 重命名文件 bucket.copy_object(bucket.bucket_name, original_filename, bucket.bucket_name, new_title) bucket.delete_object(bucket.bucket_name, original_filename)
- 将重命名代码集成到函数计算中:在函数计算中调用上述代码,实现根据 PDF 内容标题对文件进行重命名。
6. 自动化触发
- 设置触发器:在函数计算中设置触发器,例如定时触发或当新的 PDF 文件上传到 OSS 时自动触发函数执行,实现全自动的批量处理。
通过以上步骤,你可以使用阿里云的相关服务实现批量 OCR 识别提取 PDF 指定区域内容到 Excel 以及根据 PDF 文件内容的标题来批量重命名的功能。请注意,以上代码中的参数(如 AccessKey、SecretKey、Bucket 名称等)需要根据实际情况进行替换。