PDF 解析问题调研

说点真实的感受 :网上看啥组件都好,实际测,啥组件都不行。效果好的不开源收费,开源的效果不好。测试下来,发现把组件融合起来,还是能不花钱解决问题的,都是麻烦折腾一些。
这里分享了目前网上能够看到的资料。很多资料都是反复重复的,且效果不好的。目前网上基本没有太好用的工具,也没有太好的方案资料。剩下的就是收费效果好的。

PDF解析中的诸多挑战

版面分析:如何得到标题、如何的得到段落(正确的段落)、如何得到表格、如何得到图片,图和得到图片上的文字?

还有细节问题:双栏和多栏的问题、公式问题

扫描件:扫描件本质上是图片,如何从图片中解析得到文件。

PDF解析的主要思路

针对上述的挑战,PDF解析主要分为两个方向。一是标准PDF文件,程序可读。二是扫描文件,实际上就是图片,程序不可直接读。

  1. 解析和结构分析: PDF 抓取工具首先解析 PDF 文件并分析其结构以识别文档中的各种元素。 解析涉及检查布局、字体样式、表格、标题和其他结构组件,以了解内容的组织和安排。
  2. 文本提取: 然后,该工具采用 OCR 技术将扫描或基于图像的 PDF 转换为机器可读的文本。 OCR 算法通过分析 PDF 中的视觉数据并识别字符,将其转换为可编辑和可搜索的文本来实现此目的。
  3. 数据提取和模式识别: 一旦数据转换为机器可读格式,PDF 抓取工具就会应用模式识别算法来识别文本中的特定数据点,例如文档中的关键字、模式或预定义结构。 例如,抓取工具可以根据预定规则或正则表达式查找发票号码、日期、客户姓名或产品详细信息。
  4. 输出和格式: 然后,PDF 抓取工具将提取的数据组织成相关字段和结构化格式,例如电子表格、数据库或 JSON/XML,以供进一步分析。

OCR解析的路线

OCR是唯一的解决扫描版文件的方案,包括获取图片上的内容。

unstructured

GitHub - Unstructured-IO/unstructured: Open source libraries and APIs to build custom preprocessing pipelines for labeling, training, or production machine learning pipelines.

Paddle-structure

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md#41-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B

Meta的版面恢复大模型:Nougat

Meta的版面恢复大模型:Nougat  | Breezedeus.com

Nougat被戏称为富人的玩具。有一段这样的描述,就知道它有多慢了!“在一台配备有24GB VRAM的NVIDIA A10G显卡的机器上,可以并行处理6页内容。生成速度在很大程度上取决于给定页面上的文本量。在没做任何推理优化时,按平均每页有 ~1400 个 tokens算,Nougat base模型处理一个batch图片的平均时间为19.5秒。”

Nougat:结合光学神经网络,引领学术PDF文档的智能解析、挖掘学术论文PDF的价值 - 汀、人工智能 - 博客园

P2T检查走小模型的路线,目前拿来做内容识别还是OK的,特别是在公式方面。

GitHub - breezedeus/Pix2Text: Pix In, Latex & Text Out. Recognize Chinese, English Texts, and Math Formulas from Images. 80+ languages are supported.

PDF 解析工具对比

使用Python操作PDF:常用PDF库总结 - 知乎

大模型RAG问答下的实用开源文档解析工具总结及技术思考:从文档版本分析到单双栏处理

PDF信息提取技术的汇总(干货满满!) - 知乎

可以拿到bbox的组件

pdfplunber  pdfminer  pymupdf  papermage  这些组件是不是都可以拿到bbox?

  1. pdfplumber:pdfplumber 是一个基于 PDFMiner 的 Python 库,专门用于提取 PDF 文件中的文本和表格数据。它提供了一些方法来获取文本、表格和页面的 bounding box 信息。
  2. pdfminer:PDFMiner 是一个功能强大的 PDF 处理工具,可以用于提取 PDF 文件中的文本和布局信息。通过 PDFMiner,你可以获取文本、图片、表格等元素的位置信息,从而获得它们的 bounding box。
  3. pymupdf:PyMuPDF(也称为MuPDF)是一个用于处理 PDF 文件的 Python 库,提供了丰富的功能,包括提取文本、图像和其他元素的信息,以及获取它们的 bounding box。
  4. papermage:Papermage 是一个用于处理 PDF 文件的 Python 库,它使用了 PDFMiner 和其他一些工具,可以用于提取 PDF 文件中的文本、图像和布局信息,包括 bounding box。

可以拿到bbox的组件组件对比

  1. pdfplumber
    1. 优点:pdfplumber 提供了简单易用的接口,使得提取文本和表格数据以及获取 bbox 变得非常方便。
      1. 它能够准确地提取文本的 bbox,并且支持表格的识别和提取。
      2. 在处理包含复杂布局的 PDF 文件时表现较好。
    2. 缺点:对于处理包含大量图像的 PDF 文件时,性能可能不如其他库。
      1. 对于一些特殊格式的 PDF 文件,可能会出现解析错误。
  2. pdfminer
    1. 优点:PDFMiner 是一个功能强大且灵活的库,可以用于处理各种类型的 PDF 文件。
      1. 它提供了丰富的功能和选项,使得用户可以对文本和布局信息进行更深入的处理和分析。
    2. 缺点:相比于其他库,PDFMiner 的接口相对较复杂,需要更多的代码来实现相同的功能。
      1. 在处理复杂布局的 PDF 文件时,可能需要额外的调整和处理,以获得准确的 bbox 信息。
  3. pymupdf
    1. 优点:PyMuPDF(MuPDF)是一个快速和高效的 PDF 处理库,对于大型 PDF 文件的处理效率较高。
      1. 它提供了一些简单的方法来获取文本、图像和布局信息,并且可以准确地提取 bbox。
    2. 缺点:PyMuPDF 的文档和社区支持相对较少,有时可能需要进行一些自行探索和调试。
  4. papermage
    1. 优点:Papermage 是一个基于 PDFMiner 和其他一些工具构建的库,它提供了一些简单的接口来处理 PDF 文件。
      1. 它支持获取文本、图像和布局信息,并且能够准确地提取 bbox。
    2. 缺点:Papermage 相对较新,可能还不够成熟,可能存在一些功能上的限制和问题。
      1. 相比于其他库,Papermage 的文档和社区支持较少。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习中类别不平衡问题的解决方案

类别不平衡问题 解决方案简单方法收集数据调整权重阈值移动 数据层面欠采样过采样采样方法的优劣 算法层面代价敏感集成学习:EasyEnsemble 总结 类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况 解决方案…

智能分析网关V4电瓶车检测与烟火算法,全面提升小区消防安全水平

2024年2月23日,南京市某小区因电瓶车停放处起火引发火灾事故,造成巨大人员伤亡和损失。根据国家消防救援局的统计,2023年全国共接报电动自行车火灾2.1万起。电瓶车火灾事故频发,这不得不引起我们的重视和思考,尤其是在…

阿里云A10推理qwen

硬件配置 vCPU:32核 内存:188 GiB 宽带:5 Mbps GPU:NVIDIA A10 24Gcuda 安装 wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-rhel7-12-1-local-12.1.0_530.30.02-1.x86_64.rpm s…

ZDH-大数据采集-支持KETTLE任务

目录 项目源码 预览地址 支持KETTLE介绍 新增KETTLE任务 配置调度KETTLE 重要说明 感谢支持 项目源码 zdh_web:GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 预览地址 后台管理-登陆 用户名:zyc 密码:123456 支持KETTLE介绍 当前平台不…

lv20 QT进程线程编程

知识点&#xff1a;启动进程 &#xff0c;线程 &#xff0c;线程同步互斥 1 启动进程 应用场景&#xff1a;通常在qt中打开另一个程序 process模板 QString program “/bin/ls"; QStringList arguments; arguments << "-l" << “-a";QPro…

手撕Java集合之简易版Deque(LinkedList)

在目前&#xff0c;许多互联网公司的面试已经要求能手撕集合源码&#xff0c;集合源码本身算是源码里比较简单的一部分&#xff0c;但是要在面试极短的10来分钟内快速写出一个简易版的源码还是比较麻烦的&#xff0c;很容易出现各种小问题。所以在平时就要注重这方面的联系。 以…

仓储自动化新解:托盘四向穿梭车驶入智能工厂 智能仓储与产线紧密结合

目前&#xff0c;由于对仓库存储量的要求越来越高&#xff0c;拣选、输送以及出入库频率等要求也越来越高&#xff0c;对此&#xff0c;在物流仓储领域&#xff0c;自动化与智能化控制技术得以快速发展&#xff0c;货架穿梭车在自动库领域的应用越来越广泛。现阶段&#xff0c;…

linux之进程理解(1)

目录 1. 冯诺依曼体系结构 2. 操作系统(OS) 2.1 概念 2.2 设计OS的目的 2.3 定位 2.4 理解管理 3. 系统调用和库函数概念 4. 补充 1. 冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体…

chrome选项页面options page配置

options 页面用以定制Chrome浏览器扩展程序的运行参数。 通过Chrome 浏览器的“工具 ->更多工具->扩展程序”&#xff0c;打开chrome://extensions页面&#xff0c;可以看到有的Google Chrome扩展程序有“选项Options”链接&#xff0c;如下图所示。单击“选项Options”…

制作镜像与配置推送阿里云仓库

一、制作jdk镜像 1.1、Alpine linux简介 Alpine Linux是一个轻量级的Linux发行版&#xff0c;专注于安全、简洁和高效。它采用了musl libc和BusyBox&#xff0c;使得系统资源占用较少&#xff0c;启动速度较快。 Alpine Linux也提供了一个简单的包管理工具APK&#xff0c;(注…

【计算机网络_应用层】协议定制序列化反序列化

文章目录 1. TCP协议的通信流程2. 应用层协议定制3. 通过“网络计算器”的实现来实现应用层协议定制和序列化3.1 protocol3.2 序列化和反序列化3.2.1 手写序列化和反序列化3.2.2 使用Json库 3.3 数据包读取3.4 服务端设计3.5 最后的源代码和运行结果 1. TCP协议的通信流程 在之…

深入分析Android运行时环境ART:原理、特点与优化策略

摘要 随着移动互联网的快速发展&#xff0c;智能手机的性能和功能日益强大&#xff0c;其中Android操作系统因其开放性和灵活性而占据主导地位。Android运行时环境&#xff08;ART&#xff09;作为执行应用程序代码的关键组件&#xff0c;在系统性能和用户体验方面起着至关重要…

Vue+SpringBoot打造高校学生管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学生选课模块2.4 成绩管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学院课程表3.2.3 学生选课表3.2.4 学生成绩表 四、系统展示五、核心代码5.1 查询课程5.2 新…

超详细红黑树的模拟实现

前言 有人说设计出AVL树的的人是个大牛&#xff0c;那写红黑树&#xff08;RBTree&#xff09;的人就是天才&#xff01; 上一篇文章&#xff0c;我们已经学习了AVL树&#xff0c;牛牛个人认为AVL树已经够优秀了&#xff0c;那让我们一起探究一下&#xff0c;为什么红黑树比AV…

链表类型题目

文章目录 简介链表的常用技巧两数相加原理代码代码|| 两两交换链表中的节点代码原理 重排链表(重要)原理代码 合并 K 个升序链表代码递归代码 K 个一组翻转链表原理代码 简介 大家好,这里是jiantaoyab,这篇文章给大家带来的是链表相关的题目练习和解析,希望大家能相互讨论进步 …

[线代]自用大纲

部分内容整理自张宇和网络 序 题型分布&#xff1a; 题型单题分值题目数量总分值选择题5315填空题515解答题12112 *一道大题可能用到六部分所有知识 矩阵 性质 k k k倍和乘积行列式 ∣ k A ∣ k n ∣ A ∣ |kA|k^n|A| ∣kA∣kn∣A∣ ∣ A B ∣ ≠ ∣ A ∣ ∣ B ∣ |AB|≠…

如何解决微服务的数据一致性分发问题?

介绍 系统架构微服务化以后,根据微服务独立数据源的思想,每个微服务一般具有各自独立的数据源,但是不同微服务之间难免需要通过数据分发来共享一些数据,这个就是微服务的数据分发问题。Netflix/Airbnb等一线互联网公司的实践[参考附录1/2/3]表明,数据一致性分发能力,是构…

【 10X summary report】怎么看?详细解读笔记

报告内容 在开始正式的分析之前&#xff0c;需要查看在对齐和计数过程中生成的任何总结统计信息。下图是由Cell Ranger工具创建的10X总结报告&#xff0c;在从10X scRNA-seq实验生成计数矩阵时会生成。 The left half of the report describes sequencing and mapping statist…

C++之stack

1、stack简介 stack是实现的一个先进后出&#xff0c;后进先出的容器。它只有一个出口&#xff0c;只能操作最顶端元素。 2、stack库函数 &#xff08;1&#xff09;push() //向栈压入一个元素 &#xff08;2&#xff09;pop() //移除栈顶元素 &#xff08;3…

基于springboot+vue的中国陕西民俗网

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…