提取pdf中文字-个人记录

目录

一、PaddleOCR

二、Tesseract

三、PyMuPDF


一、PaddleOCR

步骤:

1.安装PaddleOCR

2.准备pdf文件

3.将pdf转为图片,在对图片提取文字

安装:

1.安装PaddleOCR

pip install "paddleocr>=2.0.1"

2.安装paddlepaddle 

pip install paddlepaddle

安装不了,目前paddlepaddle不支持arm64架构

安装指南-使用文档-PaddlePaddle深度学习平台

二、Tesseract

1.安装依赖

>  yum install autoconf automake libtool  libjpeg-devel libpng-devel libtiff-devel zlib-devel make

报错,没限权。改为pip,报错。原因:libjpeg-devellibpng-devellibtiff-develzlib-devel 这些包通常是系统软件包管理器(如 yum)提供的,而不是通过 Python 包管理器(如 pip)安装的。它们是用于开发和编译过程中的依赖库,不是 Python 包。 

2.安装依赖的Leptonica库

wget https://github.com/DanBloomberg/leptonica/releases/download/1.80.0/leptonica-1.80.0.tar.gz

tar -xzvf leptonica-1.80.0.tar.gz

cd leptonica-1.80.0

./configure --prefix=/home/tess4j/leptonica-1.80.0  && make && make install

3,将 Leptonica加入环境变量

vim /etc/profile

插入

export LD_LIBRARY_PATH=$LD_LIBRARY_PAYT:/home/tess4j/leptonica-1.80.0/lib

export LIBLEPT_HEADERSDIR=/home/tess4j/leptonica-1.80.0/include

export PKG_CONFIG_PATH=/home/tess4j/leptonica-1.80.0/lib/pkgconfig

 退出后让配置生效

source /etc/profile

 4.安装Tesseract-OCR

wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/4.1.1.tar.gz

重名名下压缩包

mv 4.1.1.tar.gz tesseract-4.1.1.tar.gz
  
tar -xzvf tesseract-4.1.1.tar.gz 

cd tesseract-4.1.1/

./autogen.sh

./configure --prefix=/home/tess4j/tesseract-4.1.1  && make && make install

sudo ldconfig

 5.配置Tesseract环境变量

vim /etc/profile

PATH=$PATH:/home/tess4j/tesseract-4.1.1/bin
export PATH
export TESSDATA_PREFIX=/home/temp/tessData  ##注意:该位置是训练库所在文件目录
export PATH=$PATH:$TESSDATA_PREFIX

source /etc/profile

6.测试安装是否成功

tesseract --version

 7.测试

识别图片命令
tesseract 567.png outputteee -l chi_sim+eng

参数说明
tesseract = 命令
567.png=当前目录文件
outputteee=会在当前目录生成outputteee.txt文件
-l chi_sim+eng=中文+英文,如果是单个语言-l chi_sim就可以了

 参考:

Linux 最全安装Tesseract_linux安装tesseract-CSDN博客

三、PyMuPDF

1.安装PyMuPDF

pip install pymupdf

2.pdf转txt样例

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


def pyMuPDF_fitz(pdfPath):
    startTime_pdf2img = datetime.datetime.now()  # 开始时间

    text_list = []
    pdfDoc = fitz.open(pdfPath)
    for page in pdfDoc:
        text = page.get_text()
        text_list.append(text)
    text_list = "\n".join(text_list)
    try:
        with open("/home/bingxing2/ailab/group/ai4agr/wzf/LLM/txt/test.txt", 'a+') as neirong:
            neirong.write(text_list)
    except IOError as e:
        print("An error occurred while writing the file:", e)


    endTime_pdf2img = datetime.datetime.now()  # 结束时间
    print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)


def process_all_pdfs_in_directory(directory):
    for filename in os.listdir(directory):
        if filename.endswith('.pdf'):
            pdf_path = os.path.join(directory, filename)
            pyMuPDF_fitz(pdf_path)


if __name__ == "__main__":
    # 指定PDF所在的目录
    pdf_directory = r'/home/bingxing2/ailab/group/ai4agr/wzf/LLM/pdf/'
    process_all_pdfs_in_directory(pdf_directory)

注:

pymupdf不能直接提取表格,要使用pdfplumber来实现

提取图片使用img=page.getImageList()

参考:

PaddleOCR—图片文字识别提取—快速使用教程_paddleocr使用教程-CSDN博客

Paddlepaddle-GPU版本安装_paddlepaddle-gpu 安装版本-CSDN博客

paddle实现获取pdf的内容_paddleocr识别pdf-CSDN博客

PaddleOCR详解和识别图片中文字_paddle ocr-CSDN博客

Python 实现 PDF 文件转换为图片 / PaddleOCR_python ptf 转图片-CSDN博客

【paddle-gpu2.5版本安装踩坑记录】_paddle2.5-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/605972.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

边缘网关畅维通达EN6400使用测评

1. 引言 在当前快速发展的工业4.0时代,边缘计算已经成为了一个关键技术,它能够使数据处理更加接近数据源头,从而提高处理速度并降低响应时间。这一技术尤其在工业自动化领域显示出了极大的潜力,因为它能有效处理大量来自工业设备…

简单数据结构——栈和队列1(栈超全)(初始化,销毁,出栈入栈销毁实现,例题运用)

知识特点 类似数据表链表,在逻辑上依次存储,但对比顺序表和链表有所限制,不能随便存储 一定要先掌握顺序表的实现,本人博客有顺序表专栏大家可以自行查看,看懂顺序表专栏之后再来了解栈的实现会更容易懂。 如果还没…

Xilinx FPGA底层逻辑资源简介(1):关于LC,CLB,SLICE,LUT,FF的概念

LC:Logic Cell 逻辑单元 Logic Cell是Xilinx定义的一种标准,用于定义不同系列器件的大小。对于7系列芯片,通常在名字中就已经体现了LC的大小,在UG474中原话为: 对于7a75t芯片,LC的大小为75K,6输…

LangChain:简化大模型应用

LangChain 框架提供了常见用例的抽象,简化了大型语言模型(LLM)(如 OpenAI GPT4 或 Google PaLM)的应用。它支持 JavaScript 和 Python。 为了弄清楚为什么需要 LangChain,我们先来看下 LLM 的工作原理。 …

ctfshow-web入门-102

这个题我想记录一下,主要是这个方法属实是有点惊艳到我了。故而进行记录,也为了方便大家阅读理解。 看题目,根据题目我写一下我的分析: $_POST传入一个v1,$_GET传入一个v2,一个v3。 赋值符号 优先级高于…

echarts双Y轴,并实现图例等

一个Y轴时yAxis为对象 yAxis: {type: value,name: 占比(%) },两个Y轴时yAxis为数组 yAxis: [{ // 左侧的type: value,name: 占比(%),nameTextStyle: {padding: [0, 0, 10, -50]},min: 0,max: 100,splitNumber: this.splitNumber, // 设置坐标轴的分割段数interval: 20, // 标轴…

【牛客】Tokitsukaze and Average of Substring

原题链接:登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 前缀和。 开一个int类型的前缀和数组pre[30][N](pre[i][j]表示某字符转成的数字 i 在一段区间的前缀个数。因为字母表有‘a’~z…

并发编程实现

一、并行编程 1、Parallel 类 Parallel类是System.Threading.Tasks命名空间中的一个重要类,它提供数据并行和任务并行的高级抽象。 For和ForEach Parallel类下的For和ForEach对应着普通的循环和遍历(普通的for和foreach),但执行时会尝试在多个线程上…

Blender修改器

修改器 Modifier,对模型进行修改,相当于一个函数。 修改器图标是界面右下角的扳手样式 每个修改器的顶部都有如下样式,从左到右分别为:展开/折叠,修改器类型,修改器名称,编辑模式按钮&#xff…

游戏辅助 -- 某游戏一键端配置

游戏一键端下载地址及安装视频: https://pan.quark.cn/s/e6a373d94707 ​https://pan.quark.cn/s/ef7ab0c48776 准备工作 Vmware虚拟机软件:用于创建和管理虚拟机。 SecureCRT:一款支持SSH的终端仿真程序,用于远程登陆服务器…

SoC系统中AXI4 AXI3兼容性及exclusive access

AXI4和AXI3是高级扩展接口(Advanced eXtensible Interface)的两个不同版本,它们都是用于SoC(System on Chip)设计中的总线协议,用于处理器和其它外设之间的高速数据传输。以下是它们之间的一些主要区别&…

vscode设置免密登录远程服务器

文章目录 1. 问题描述2. 解决方案3. 原理 1. 问题描述 当我们使用vscode的ssh连接远程服务器后,过一段时间后,总是要求登录服务器的密码。 这就导致一个麻烦就是: 无论是在公司还是在学校,密码往往不是自己设置的,所以记忆起来就…

利用BACnet分布式IO控制器优化Niagara楼宇自动化系统

在智能建筑领域,随着物联网技术的飞速发展,如何实现高效、灵活且安全的楼宇自动化控制成为了行业关注的焦点。BACnet IP分布式远程I/O模块,作为这一领域的创新成果,正逐渐成为连接智能建筑各子系统的关键桥梁,尤其在与…

蓝桥杯练习系统(算法训练)ALGO-946 Q神的足球赛

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 足球赛上,只见Q神如闪电般的速度带球时而左,时而右,时而前,时而后&#xff…

带你入门React

目录 前言一,基本配置1.1 环境搭建1.2 页面初始化渲染二,基础学习2.1 结构与样式开发2.2 数据展示2.3 行内样式2.4 条件渲染2.5 列表渲染2.6 点击事件 三,页面更新3.1 组件数据3.2 组件数据共享 总结 前言 笔者之前的工作经验都局限于Vue&am…

pandas快速使用

DataFrame介绍 Dateframe结构和列表类似,区别是对于DataFrame的每一列和每一行均有一个标签。例如以下数据, 上述数据中,日期作为每行的标签。a、b、c、d、e分别是每列的标签 生成连续日期数据 使用方法date_range(),该方法有两…

Lazada商品详情API接口:深度解析与应用

前言 在当今电子商务的繁荣时代,对于电商平台来说,提供一套高效、稳定的API接口是非常重要的。Lazada,作为东南亚领先的电商平台之一,其API接口体系为卖家、开发者以及第三方服务提供了丰富的功能和数据支持。其中,商品…

邦注科技 模具保护器 CCD电子眼 专业工业视觉检测设备

模具保护器是一种用于保护模具的设备,可以在塑料压铸和冲床等加工过程中起到保护模具的作用。以下是关于模具保护器在保护塑料压铸和冲床模具方面的应用: 塑料压铸模具保护器: 防止碰撞:在塑料压铸过程中,模具可能会…

初识C++ · 内存管理

目录 1 C/C的内存分布 2 C语言的内存管理 3 C的内存管理 4 operator new 和 operator delete 5 定位new 1 C/C的内存分布 语言不同,内存分布是相同的,对于局部变量都是放在栈上,全局变量都是放在静态区(数据段)&…

jvm重要参数可视化和线上问题排查

jvm重要参数可视化和线上问题排查 目标jvm参数分类(了解)运行时数据区相关的(jdk1.8)处理 OOM 相关的垃圾回收器相关的GC 日志记录相关的意义,默认值,调优原则(重要, 待拆分) 排查 OOM 流程 和 常见原因参考文章 目标 …
最新文章