当前位置: 首页 > news >正文

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

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

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

        pip install paddlepaddle paddleocr pymupdf
        2. 将 PDF 转换为图像:使用 PyMuPDF 将 PDF 的每一页转换为图像

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

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

        二、完整代码

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 resultdef 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参数来支持多语言识别。

相关文章:

  • 分布式之易混淆概念
  • vue浅试(1)
  • EasyRTC音视频实时通话:打造高清低延迟的远程会议新生态
  • (51单片机)LCD显示温度(DS18B20教程)(LCD1602教程)(延时函数教程)(单总线教程)
  • 7. 深入Spring AI:刨析 Advisors 机制
  • C++中的算术转换、其他隐式类型转换和显示转换详解
  • 极验4滑块笔记:整理思路--填坑各种问题
  • Java--数组的应用
  • Linux随记(十七)
  • 辛格迪客户案例 | 浙江高跖医药委托生产质量管理协同(OWL MAH)项目
  • C语言实现堆(优先队列)详解
  • 【沉浸式求职学习day21】【常用类分享,完结!】
  • 使用 Vue Router 和 Vite 构建的自动路由生成系统
  • Python基础总结(九)之推导式
  • C# 封装教程
  • 【SF顺丰】顺丰开放平台API对接(注册、API测试篇)
  • 《一次静态 ObjectMapper 引发的 RocketMQ 消费异常排查》
  • 极刻云搜-专业的软件网址搜索引擎
  • Linux421用户、组
  • 移动端动态滑动拨盘选择器【Axure元件库】
  • 产假工资是谁出?女职工生育能领多少生育津贴?解答来了
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 新片|《我仍在此》定档5月,《新·驯龙高手》同步北美上映
  • 4月译著联合书单|心爱之物:热爱如何联结并塑造我们
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火
  • 顺利撤离空间站,神十九乘组踏上回家之旅