Python实现PDF图片OCR识别:从转换到提取的完整指南

Mason
Mason
发布时间:2026-10-14 | 4人浏览过
原创

本文详解如何利用Python进行PDF图片OCR识别。首先通过PyMuPDF将PDF页面转换为高清图片,再结合Tesseract-OCR引擎提取文字内容。文章涵盖环境配置、代码示例及手写体识别局限性,帮助开发者高效实现文档信息自动化提取。

应用场景

借助图像识别技术,能够迅速且便捷地提取图片内含的关键信息,大幅提升数据处理效率。

由于Python原生不支持直接对PDF文件进行OCR识别,因此处理PDF时需先将其转换为图片格式,随后再执行识别操作。

所需工具

  • Python

建议安装3.7或更高版本的Python环境。

  • tesseract-ocr

官方下载地址为:https://github.com/UB-Mannheim/tesseract/wiki,建议直接采用最新版本以确保功能完整。

  • 依赖库清单

pip install pillow
pip install opencv-python
pip install fitz
pip install PyMuPDF
pip install pytesseract

代码实现示例


from PIL import Image
import os
import pytesseract 
import cv2 as cv
import fitz

def pdf_image(pdfPath,imgPath,zoom_x,zoom_y,rotation_angle):
  # 打开PDF文件
  pdf = fitz.open(pdfPath)
  # 逐页读取PDF
  for pg in range(0, pdf.pageCount):
    page = pdf[pg]
    # 设置缩放和旋转系数
    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
    pm = page.getPixmap(matrix=trans, alpha=False)
    # 开始写图像
    pm.writePNG(imgPath+str(pg)+".png")
    #pm.writePNG(imgPath)
  pdf.close()
pdf_path ='D:/123.pdf'
img_path ='D:/123.png'
pdf_image(pdf_path,img_path,5,5,0)
# 依赖opencv
img=cv.imread(img_path)
text=pytesseract.image_to_string(Image.fromarray(img),lang='chi_tra')
# 不依赖opencv写法
# text=pytesseract.image_to_string(Image.open(img_path))
print(text)

结果总结

针对清晰度较高的印刷文字图片,该方法的识别准确率表现优异。

然而,对于手写体文字的识别效果相对有限,准确率可能下降。

注意事项

安装tesseract-ocr时,务必勾选并安装所需的语言包,否则将无法进行对应语言的识别。

以上即为使用Python进行PDF图片OCR识别的完整流程,更多相关技术细节可参考本站其他文章。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表