图文识别0难度上手~基于飞浆对pdf简易ocr并转txt

前言

本篇pdf适用windows对视觉识别0基础的的纯小白用户。大佬请绕道~~

注意:

本项目pdf的ocr对于表格、画图文字,水印等干扰没做任何处理,因此希望各位使用该功能的pdf尽量不要含有这些干扰项,以免影响翻译效果。

流程

1.构建环境

用conda创建一个虚拟python环境

复制代码
conda crate -n pp python==3.11

2.安装包

安装飞浆paddle 和paddleocr

gpu版本

pip install paddlepaddle-gpu paddleocr

cpu版本

pip install paddlepaddle paddleocr

pdf转图片工具

复制代码
https://github.com/oschwartz10612/poppler-windows/releases

pip install pdf2image

3.具体代码

假设在我们有一堆pdf文件在pdfs文件夹中,我们需要将其每个pdf文件转成对应的txt文件。则可使用如下代码

复制代码
from pdf2image import convert_from_path
import cv2
import numpy as np
from PIL import Image
import os
# 将 PDF 文件转换为图片列表
files = os.listdir('pdf')

for file in files:
    if not file.endswith('.pdf'):
        print(file)
        continue
    txt = file.replace('.pdf', '.txt')
    if os.path.exists('txt/'+txt):
        continue
    txt_writer = open('txt/'+txt, 'w',encoding='utf-8')
    images = convert_from_path('pdf/'+file)
    # print(type(images))
    # print(images[0])
    # image = cv2.cvtColor(np.array(images[0]), cv2.COLOR_RGB2BGR)


    from paddleocr import PaddleOCR, draw_ocr

    # 创建 PaddleOCR 实例
    ocr = PaddleOCR(use_angle_cls=True, lang='ch',use_gpu=True)  # 默认使用英文模型,可以通过 lang 参数切换到中文模型

    # 遍历每一张图片并识别文字
    for i, image in enumerate(images):
        print('第{}张图片'.format(i+1))
        # 转换图片为可用于识别的格式
        # source = image.convert('RGB')
        image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)        # image.save(f'page_{i}.jpg')

        # 识别图片中的文字
        result = ocr.ocr(image, cls=True)

        # 打印识别结果
        try:
            for lines in result:
                for line in lines:
                    # print(line[1][0])
                    txt_writer.write(line[1][0]+'\n')
        except:
            print(file+'识别失败')
    txt_writer.close()

4.注意

由于本代码仅能简单提取pdf的文字,所以一旦出图片或者表格之类会导致该页识别效果变差,敬请谅解~

相关推荐
南风微微吹3 小时前
最新国考《行测+申论》历年真题及答案解析电子版pdf(2000-2026年)
pdf
wujian83114 小时前
豆包导出pdf方法
人工智能·ai·pdf·豆包·deepseek·ai导出鸭
俊哥工具8 小时前
鼠标自动连点怎么设置?详细教学,简单易懂!
python·django·pdf·计算机外设·virtualenv·pygame
2601_950316069 小时前
塞尔达攻略+塞尔达设定集+塞尔达传说攻略
游戏·pdf·电视盒子
SunnyDays101110 小时前
Java 实现 PDF 附件的添加与删除:四种实用方法
java·pdf·附件
小小尚@10 小时前
AI 加持!Adobe Acrobat DC 2026 解锁 PDF 高效办公新体验
人工智能·pdf
竹之月10 小时前
【Auto CAD 2020】单张打印输出PDF图纸A0、A1尺寸,黑白颜色
经验分享·pdf·auto cad2020
SunnyDays101111 小时前
Java 实现 PDF 中文文本查找与高亮的四种方法
java·pdf·查找文字
wujian831111 小时前
千问 文心 元宝 Kimi导出pdf方法
人工智能·ai·pdf·豆包·deepseek
凌云若寒1 天前
BarTender许可 | 关于PDF打印数量说明
学习·pdf·产品经理·制造·软件需求