基于 PaddleOCR对pdf文件中的文字提取

一、基于 PaddleOCR 提取 PDF 文件中的文字流程

  1. 安装必要的依赖库:包括 PaddleOCR 和 PyMuPDF

pip install paddlepaddle paddleocr pymupdf

  1. 将 PDF 转换为图像:使用 PyMuPDF 将 PDF 的每一页转换为图像

  2. 使用 PaddleOCR 进行文字识别:对转换后的图像进行文字识别

  3. 处理和保存识别结果:提取识别结果并保存到文件或进行进一步处理

二、完整代码

python 复制代码
import fitz  # PyMuPDF
import os
from paddleocr import PaddleOCR, draw_ocr
import cv2
import numpy as np
from PIL import Image

# 初始化 PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # 使用中文语言模型


def pdf_to_images(pdf_path, output_folder):
    """
    将 PDF 文件的每一页转换为图像
    :param pdf_path: PDF 文件路径
    :param output_folder: 输出图像的文件夹路径
    """
    pdf_doc = fitz.open(pdf_path)
    for page_number in range(len(pdf_doc)):
        page = pdf_doc[page_number]
        image = page.get_pixmap(
            matrix=fitz.Matrix(2, 2), alpha=False
        )  # 可以调整缩放比例
        image_path = os.path.join(output_folder, f"page_{page_number + 1}.png")
        image.save(image_path)
    pdf_doc.close()


def recognize_text(image_path):
    """
    使用 PaddleOCR 进行文字识别
    :param image_path: 图像路径
    :return: 识别结果
    """
    image = cv2.imread(image_path)
    result = ocr.ocr(image, cls=True)
    return result


def process_images_in_folder(image_folder, output_file):
    """
    处理指定文件夹中的所有图像,并将结果保存到文件
    :param image_folder: 包含图像的文件夹路径
    :param output_file: 输出文件路径
    """
    with open(output_file, "w", encoding="utf-8") as f:
        for filename in os.listdir(image_folder):
            if filename.endswith(".png"):
                image_path = os.path.join(image_folder, filename)
                result = recognize_text(image_path)
                if result is not None:
                    for line in result[0]:
                        f.write(line[1][0] + "\n")


# 示例:将 PDF 转换为图像并处理图像
pdf_path = "cqgl.pdf"
output_folder = "pdfimg"
os.makedirs(output_folder, exist_ok=True)
pdf_to_images(pdf_path, output_folder)

# 示例:处理输出图像文件夹中的所有图像并保存结果
output_file = "recognized_text.txt"
process_images_in_folder(output_folder, output_file)

三、 注意事项

  1. 字体文件:如果需要绘制识别结果,确保指定的字体文件路径有效。

  2. 图像质量:确保转换后的图像质量足够高,以便 PaddleOCR 能够准确识别。

  3. 多语言支持:如果 PDF 中包含多种语言,可以调整 PaddleOCR 的lang参数来支持多语言识别。

相关推荐
小白学大数据4 小时前
Python爬虫实现无限滚动页面的自动点击与内容抓取
开发语言·爬虫·python·pandas
hnxaoli4 小时前
通信小程序(九)快捷键自动改名
linux·python·小程序
lapiii3584 小时前
[AI大模型] DAY 1 :零基础学LangChain
python·langchain·大模型·agent
阡陌..4 小时前
pytorch模型训练使用多GPU执行报错:Bus error (core dumped)(未解决)
人工智能·pytorch·python
0思必得04 小时前
[Web自动化] Selenium处理Cookie
前端·爬虫·python·selenium·自动化
喵手4 小时前
Python爬虫实战:房价/租金指数时间序列爬虫实战 - 从多页采集到趋势分析的完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·房价/租金指数时间序列·多页采集到趋势分析·采集结果sqlite到处
serve the people4 小时前
python环境搭建 (六) Makefile 简单使用方法
java·服务器·python
智驱力人工智能4 小时前
景区节假日车流实时预警平台 从拥堵治理到体验升级的工程实践 车流量检测 城市路口车流量信号优化方案 学校周边车流量安全分析方案
人工智能·opencv·算法·安全·yolo·边缘计算
IT北辰5 小时前
基于Vue3+python+mysql8.0的财务凭证录入系统,前后端分离完整版(可赠送源码)
python·vue
墨染青竹梦悠然5 小时前
基于Django+vue的图书借阅管理系统
前端·vue.js·后端·python·django·毕业设计·毕设