PDF批量拆分、OCR识别并重命名 - Python代码实现
以下是一个Python代码示例,演示了如何使用PyPDF2库将PDF拆分为单页PDF,并使用Tesseract OCR识别图像中的文字,并根据要求进行重命名:
import os
import pytesseract
from PIL import Image
from PyPDF2 import PdfFileReader, PdfFileWriter
# 设置Tesseract OCR的安装路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 读取PDF文件
input_pdf = PdfFileReader('input.pdf')
# 创建输出文件夹
output_folder = 'output'
os.makedirs(output_folder, exist_ok=True)
# 拆分PDF为单页PDF
for page_num in range(input_pdf.numPages):
# 创建单页PDF的写入对象
output_pdf = PdfFileWriter()
output_pdf.addPage(input_pdf.getPage(page_num))
# 保存单页PDF
output_filename = f"{output_folder}/page{page_num + 1}.pdf"
with open(output_filename, 'wb') as output_file:
output_pdf.write(output_file)
# 将PDF转换为图像并进行OCR识别
image = Image.open(output_filename)
image_text = pytesseract.image_to_string(image)
# 提取需要的文本并进行替换
start_index = image_text.find('0D')
if start_index != -1:
extracted_text = image_text[start_index:start_index + 14]
extracted_text = extracted_text.replace('0D', 'OD')
# 生成新的文件名
new_filename = f"{output_folder}/page{page_num + 1}_{extracted_text}.pdf"
# 处理重名情况
suffix = 1
while os.path.exists(new_filename):
new_filename = f"{output_folder}/page{page_num + 1}_{extracted_text}_{suffix}.pdf"
suffix += 1
# 重命名文件
os.rename(output_filename, new_filename)
请确保已经安装了以下库:
- PyPDF2:用于读取和写入PDF文件
- pytesseract:用于调用Tesseract OCR进行文字识别
- Pillow:用于处理图像
你需要将上述代码中的input.pdf替换为你要处理的PDF文件的路径。另外,你还需要根据你的环境设置Tesseract OCR的安装路径。
此代码将在指定的输出文件夹中生成拆分后的单页PDF,并将每页PDF的文件名设置为识别结果。如果有重名情况,则会在文件名后添加自增后缀。
代码优化建议:
- 为了提高识别精度,可以使用Tesseract的
config参数,例如pytesseract.image_to_string(image, config='--psm 10'),选择更适合的识别模式。 - 可以根据实际情况调整
extracted_text的长度,以提取更准确的识别结果。 - 可以增加错误处理机制,例如判断识别结果是否符合预期格式,避免出现错误的文件名。
原文地址: https://www.cveoy.top/t/topic/mR7k 著作权归作者所有。请勿转载和采集!