Python使用paddleOCR批量识别pdf的方法

 更新时间:2024年03月03日 09:55:40   作者:Python斗罗  
PaddleOCR可以在图像、文本、表格等多种场景下进行文字识别,本文主要介绍了Python使用paddleOCR批量识别pdf的方法,具有一定的参考价值,感兴趣的可以了解一下

PaddleOCR是一个基于PaddlePaddle深度学习框架的OCR(Optical Character Recognition,光学字符识别)系统,可以在图像、文本、表格等多种场景下进行文字识别,具有高速、高精度、高可定制性等特点。在应用中,可以使用PaddleOCR进行pdf文件的批量识别。

注意,本文章所述方法仅适用于单栏文本,无表格等复杂场景的情况。

以下是使用PaddleOCR批量识别pdf的步骤:

1、安装PaddleOCR
首先需要安装PaddleOCR,可以参考官方文档进行安装。
按照文档来非常的简单。无需害怕。https://github.com/PaddlePaddle/PaddleOCR

2、准备pdf文件
将需要识别的pdf文件准备好,可以使用一个扫描版进行测试。

3、使用PaddleOCR进行识别
paddleocr识别pdf的过程是先将pdf变为图片,再识别图片,最终再拼接出答案。
所以我们在此将过程分为两个函数。

如下:

import datetime
import os
import fitz  # fitz就是pip install PyMuPDF

def pdf2png(pdfPath, baseImagePath):
    imagePath=os.path.join(baseImagePath,os.path.basename(pdfPath).split('.')[0])
    startTime_pdf2img = datetime.datetime.now()  # 开始时间
    print("imagePath=" + imagePath)
    if not os.path.exists(imagePath):
        os.makedirs(imagePath)
    pdfDoc = fitz.open(pdfPath)
    totalPage=pdfDoc.pageCount
    for pg in range(totalPage):
        page = pdfDoc[pg]
        rotate = int(0)
        zoom_x = 2
        zoom_y = 2
        mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
        pix = page.get_pixmap(matrix=mat, alpha=False)
        print(f'正在保存{pdfPath}的第{pg+1}页,共{totalPage}页')
        pix.save(imagePath + '/' + f'images_{pg+1}.png')
    endTime_pdf2img = datetime.datetime.now()
    print(f'{pdfDoc}-pdf2img-花费时间={(endTime_pdf2img - startTime_pdf2img).seconds}秒')

if __name__ == "__main__":
    pdfPath = r'./demo-scan.pdf'
    baseImagePath = './imgs'
    pdf2png(pdfPath, baseImagePath)
import os
import cv2
from paddleocr import PPStructure,save_structure_res
from paddleocr.ppstructure.recovery.recovery_to_doc import sorted_layout_boxes, convert_info_docx
from copy import deepcopy
# 中文测试图
table_engine = PPStructure(recovery=True,lang='ch')

image_path = './imgs/demo-scan'
save_folder = './txt'
def img2docx(img_path):
    text=[]
    imgs=os.listdir(img_path)
    for img_name in imgs:
        print(os.path.join(img_path,img_name))
        img = cv2.imread(os.path.join(img_path,img_name))
        result = table_engine(img)

        save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])

        h, w, _ = img.shape
        res = sorted_layout_boxes(result, w)
        convert_info_docx(img, res, save_folder, os.path.basename(img_path).split('.')[0])

        for line in res:
            line.pop('img')
            print(line)
            for pra in line['res']:
                text.append(pra['text'])
            text.append('\n')
        with open('txt/res.txt', 'w', encoding='utf-8') as f:
            f.write('\n'.join(text))
img2docx(image_path)

以上代码将会读取指定目录下的pdf文件,并将其转换为图像列表,然后使用PaddleOCR进行识别,最后将识别结果保存在指定目录下的文本文件中。

需要注意的是,使用PaddleOCR进行pdf识别时,由于pdf文件通常包含多页,需要将每一页的内容分别识别,并将其合并成完整的文本内容。

另外,由于PaddleOCR的识别结果可能存在误识别的情况,需要对识别结果进行校验和修正。

到此这篇关于Python使用paddleOCR批量识别pdf的方法的文章就介绍到这了,更多相关Python批量识别pdf内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何基于python3和Vue实现AES数据加密

    如何基于python3和Vue实现AES数据加密

    这篇文章主要介绍了如何基于python3和Vue实现AES数据加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python Pillow 图像处理库详解(常用Pillow函数及其参数)

    Python Pillow 图像处理库详解(常用Pillow函数及其参数)

    Pillow,原名PIL(Python Imaging Library),是一个功能强大的Python图像处理库,支持多种格式,提供丰富的图像操作功能,如旋转、缩放、颜色转换等,以及易于使用的API,Pillow支持广泛的图像文件格式,并提供图像过滤、绘制等功能
    2024-09-09
  • Python BeautifulSoup中文乱码问题的2种解决方法

    Python BeautifulSoup中文乱码问题的2种解决方法

    这篇文章主要介绍了Python BeautifulSoup中文乱码问题的2种解决方法,需要的朋友可以参考下
    2014-04-04
  • Python NumPy实用函数笔记之allclose

    Python NumPy实用函数笔记之allclose

    这篇文章主要给大家介绍了关于Python NumPy实用函数笔记之allclose的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Python编写简单的HTML页面合并脚本

    Python编写简单的HTML页面合并脚本

    这篇文章主要介绍了Python编写简单的HTML页面合并脚本的相关资料,需要的朋友可以参考下
    2016-07-07
  • 如何在Python中使用pyecharts图形画可视化大屏

    如何在Python中使用pyecharts图形画可视化大屏

    最近碰巧需要用到pyecharts,pyecharts库是一个用于生成echarts图表的类库,这篇文章主要给大家介绍了关于如何在Python中使用pyecharts图形画可视化大屏的相关资料,需要的朋友可以参考下
    2024-05-05
  • Python函数装饰器的使用教程

    Python函数装饰器的使用教程

    在了解了Python函数装饰器基础知识和闭包之后,开始正式学习函数装饰器。感兴趣的朋友可以参考本文
    2021-06-06
  • 利用Python实现批量转换图片格式

    利用Python实现批量转换图片格式

    本文重点介绍普通图片格式怎么相互转换,如jpg格式图片怎么批量转化为png格式,在深度学习项目中,有时我们收集到的数据集图片格式不统一,有的代码支持多种格式图片输入,有的则只支持个别格式,所以这时,我们需要通过脚本来转换图片格式,不说废话,直接上代码
    2025-08-08
  • python启动应用程序和终止应用程序的方法

    python启动应用程序和终止应用程序的方法

    今天小编就为大家分享一篇python启动应用程序和终止应用程序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python Requests库知识汇总

    Python Requests库知识汇总

    这篇文章主要介绍了Python Requests库学习总结,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05

最新评论