paddle实现获取pdf的内容

paddle实现获取pdf的内容

  • [1. 环境安装](#1. 环境安装)

  • [2. 实现代码](#2. 实现代码)

  • 源码链接

1. 环境安装

  • 安装paddlepaddle

    • gpu版本

      python 复制代码
      python -m pip install paddlepaddle-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple
    • cpu版本:

      python 复制代码
      python -m pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 安装PaddleOCR

    python 复制代码
    pip install "paddleocr>=2.0.1" # Recommend to use version 2.0.1+
  • 其他库

    python 复制代码
    pip install Pillow==9.5.0
    pip install fitz==0.0.1.dev2
    pip install numpy==1.24.4
    pip install PyMuPDF==1.19.0
    pip install opencv-python==4.6.0.66

2. 实现代码

  • 代码

    python 复制代码
    import cv2
    import fitz
    import numpy as np
    from PIL import Image
    from paddleocr import PaddleOCR, draw_ocr
    
    ocr = PaddleOCR(use_angle_cls=True, lang="ch", page_num=427)  # page_num=pdf文件页数
    img_path = 'data/深度学习进阶自然语言处理.pdf'
    result = ocr.ocr(img_path, cls=True)
    for idx in range(len(result)):
        res = result[idx]
        for line in res:
            print(line)
    
    # draw result
    imgs = []
    with fitz.open(img_path) as pdf:
        for pg in range(0, pdf.pageCount):
            page = pdf[pg]
            mat = fitz.Matrix(2, 2)
            pm = page.getPixmap(matrix=mat, alpha=False)
            # if width or height > 2000 pixels, don't enlarge the image
            if pm.width > 2000 or pm.height > 2000:
                pm = page.getPixmap(matrix=fitz.Matrix(1, 1), alpha=False)
    
            img = Image.frombytes("RGB", [pm.width, pm.height], pm.samples)
            img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
            imgs.append(img)
    
    for idx in range(len(result)):
        # 保存获取的文本
        with open(f'data/data_txt/text_{idx}.txt', 'w', encoding='utf-8') as f:
            res = result[idx]
            image = imgs[idx]
            boxes = [line[0] for line in res]
            txts = [line[1][0] for line in res]
            for line in txts:
                f.write(line)
                f.write('\n')
            scores = [line[1][1] for line in res]
            im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
            im_show = Image.fromarray(im_show)
            # 保存图片
            im_show.save('data/images/page_{}.jpg'.format(idx))
  • 结果展示

相关推荐
2501_9307077810 小时前
使用C#代码在 PDF 文档中创建列表
pdf
AI导出鸭1 天前
Claude的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?专业用户首选“AI导出鸭”
人工智能·pdf·ai导出鸭
qyyyyy5702 天前
外文 PDF 怎么整理成 Markdown?从翻译、内容提取到 RAG 知识库导入
自然语言处理·pdf·erlang·机器翻译·零知识证明
AI导出鸭2 天前
Perplexity的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?AI导出鸭苹果版的技术拆解与批量之道
人工智能·pdf·ai导出鸭
SpaceAIGlobal3 天前
AI PPT生成工具哪些支持PDF文档导入?
人工智能·ai·pdf·powerpoint·办公
Xxtaoaooo3 天前
极空间部署Stirling PDF:搭建自托管PDF工具箱并实现远程访问
pdf·cpolar·stirling pdf
SamChan903 天前
对比 4 种主流 PDF 文档解析方案:PyMuPDF vs pdfplumber vs Apache PDFBox vs 大模型 OCR
python·ai·pdf·ocr·apache·机器翻译
AI刀刀4 天前
Kimi 文档导出格式错乱、排版丢失、导出报错?AI 导出鸭一键智能适配,稳定输出规范 Word、PDF,高效解决各类导出难题
人工智能·pdf·word·ai导出鸭
Ai-_Man4 天前
豆包智能体把对话批量导出为Word或PDF的正确顺序
人工智能·ai·小程序·pdf·word
SamChan904 天前
FastAPI+Celery+Redis搭建企业级PDF翻译异步任务系统
redis·后端·python·pdf·wpf·fastapi