随着大模型文档智能应用逐渐步入正轨,文档解析类产品成为其中重要的一环。文档解析工具能够“唤醒”沉睡在PDF文件中的知识,将其转化为机器能够识别、读取的信息,将可用数据从txt、csv格式扩展到大批量的电子档、扫描档文件,为数据处理、大模型训练、RAG系统开发提供优质的“燃料”。

近期,文档解析的赛道越发火热,大量企业、开发者入局,为AI应用者提供更多可选产品。最近我们也在文章《以后再也不用肉眼测评解析产品了》(+link)中探讨了面对多种选项,我们应如何挑选适合自己业务场景的产品。

然而,作为解析产品的开发者之一,我们认为:PDF解析,还能做得更好,为用户提供更可靠、优质的服务。

今天,我们将从开发者的视角,与大家分享目前解析产品能进一步提升的一些不足之处,也欢迎大家在评论区分享使用感受、提出指正意见。在与大模型应用接轨的解析领域,开发人员与用户是并肩作战的开拓者,所有意见对我们而言都至关重要!

使用过Markdown Tester的朋友可能已经注意到,目前测评的国内外几款相对主流解析产品,包括GPT-4o,都还称不上是“六边形战士”。

其中颇为薄弱的一项,就是公式

而准确的公式识别在许多场景下,都显得相当重要。当我们需要处理技术类论文、专业书籍时,复杂公式是绕不开的重难点。在涉及大量教科书、教辅、试卷的教育应用场景下情况同样如此。在OCR与文档解析工具得到普遍使用之前,公式的手动输入和校对需要消耗许多人力成本,而公式的多变大小及版式也给机器识别造成了挑战。

以下图为例——

尽管公式中大部分信息被正确识别,在指数方面,解析工具反馈的结果仍有误差。这也是目前教育类应用的用户朋友仍需手动调整的原因。

对于复杂公式的训练提升,是我们重视的优化方向之一。

在财经、学术、企业知识库等各类RAG场景下,比公式出镜率更高的,就是此前我们已经介绍过的表格识别《聊聊文档解析测评里的表格指标》(+link)。如下图案例所显示,表格形式的复杂性、多样性无法穷举,面对无线表、合并单元格、不规则行距、跨段、跨页等难题,表格识别的加强是文档解析类产品的长期命题。

针对RAG,TextIn团队还在关注一个提及率不算特别高的问题:标题检测与目录树。在RAG系统开发过程中,面对长文档切片的需要,业内已形成普遍共识:如果文档有清晰准确的标题及层级,即可改换按长度分chunk的传统方式,而是利用子标题、段落做基于语义理解的分片。这有利于提升系统后续的检索召回能力,以及问答任务中总体的回复表现。

目前,在文档解析过程中,由于不同类型的长文档标题格式各异,同时部分标题在语义上相对模糊,要准确、稳定地完成一级、二级、三级与其他子标题的识别仍属难点。以TextIn团队在开发中处理的实际场景为例,对年报、财报、研报等类型文件,标题层级识别与目录树建构已经能达到较好的效果,但在解析格式一致性更弱的文档类型时,表现还需要进一步优化。对解析来说,尝试如实还原各层级标题是一项较为困难、但对下游工作助益相当大的工作。因此,文档目录树的识别是我们关注的解析重点之一,欢迎对此有较高精度需求的用户随时与我们探讨应用场景,试用最新版的解析效果!

最后,我们也想与大家分享一个我们接到的吐槽——文档解析产品的API使用专业性要求太高!尤其在JSON结构的Detail参数方面,例如,现在当我们在参数中读取某一元素的位置,得到的结果为:

坐标数组[283,96,343,96,343,116,283,116](排版加个框线)

数组的实际理解方式是:在象限内,以左下坐标为起点的顺时针坐标位置。

但显然,它与“直观简单”相去甚远。

接下来,我们会不断以用户体验为中心,进行输出优化,争取让JSON坐标数组这种类型的“槽点”不再成为我们用户的困扰。

LLM时代,我们需要更多优质的语料。AI相关行业的小伙伴基本上都认同,我们“喂”给大模型的语料质量,决定了大模型反馈给我们的回答质量。

所以,尽管在这一年中,PDF解析工作同样进度条发展迅速,我们仍然认为:解析还能做得更好!

今天我们分享了一些当前的重难点与优化方向,欢迎各位开发者随时向我们提出其他需求,与我们共同交流当下的需求~

TextIn文档解析产品目前正在内测计划中,请关注公众号合研社,申领内测福利!

立刻试用文档解析。

关于测评工具、产品或需求,都可以找我们沟通。我们欢迎所有探讨和交流!

PDF解析,还能做得更好的更多相关文章

  1. pdf解析与结构化提取

    #PDF解析与结构化提取##PDF解析对于PDF文档,我们选择用PDFMiner对其进行解析,得到文本.###PDFMinerPDFMiner使用了一种称作lazy parsing的策略,只在需要的时 ...

  2. [源码解析]为什么mapPartition比map更高效

    [源码解析]为什么mapPartition比map更高效 目录 [源码解析]为什么mapPartition比map更高效 0x00 摘要 0x01 map vs mapPartition 1.1 ma ...

  3. VPS用来配置上网外,还可以做一个同步盘

    我曾经在一个活动的博文里说过,男人必须要有一个VPS和一个树莓派,VPS这个东西,以后会是中国男人的一种必备技能,今天又有一个小伙伴请教我VPS的用法,我就简单说说我目前使用的情况.首先我希望你能有点 ...

  4. Redis还可以做哪些事?

    在上一篇文章中,讲到了redis五大基本数据类型的使用场景,除了string,hash,list,set,zset之外,redis还提供了一些其他的数据结构(当然,严格意义上也不算数据结构),一起来看 ...

  5. PDF解析记录——Pdfbox

    此文仅作记录[嫌放电脑里碍事-_-],内容为以前收集的一小段代码.   下面为pdf获取文本的简要代码片段: private string GetPDFText(string filename) { ...

  6. SAP 打印自动导出PDF本地文件(自己做的例子)

    smartforms导出PDF: 常用函数有: convert_otfconvert_otfspooljob_2_pdfconvert_abapspooljob_2_pdfCONVERT_OTF_2_ ...

  7. 为什么位运算可以实现加法(1、 不考虑进位的情况下位运算符中的异或^可以表示+号)(2、 位运算符中的与运算符&和左移运算符<<可以模拟加法中的进位)(3、位运算不仅可以做加法,还可以做其它的乘法减法等:计算机本质是二进制运算)

    为什么位运算可以实现加法(1. 不考虑进位的情况下位运算符中的异或^可以表示+号)(2. 位运算符中的与运算符&和左移运算符<<可以模拟加法中的进位)(3.位运算不仅可以做加法,还 ...

  8. 除了Web和Node,JavaScript还能做什么

    前言 提起JavaScript,我们也许经常会想到的是,可以用来写Web页面嘛,又或者,会想起Node.js 这个服务端环境,搞前后端同构. 那么,除此之外, JavaScript还可以做什么?   ...

  9. PDF转任意格式 & 做动画效果

    1.PDF转任意格式 & 做动画效果|让PPT傻眼去吧! http://www.aiweibang.com/yuedu/6984803.html

  10. Zsh vs. Bash不完全对比解析,zsh是一种更强大的被成为“终极”的Shell

    https://www.zhihu.com/question/21418449 Mort | Zsh vs. Bash:不完全对比解析(1) 2014-10-07  bdpqlxz     Zsh和B ...

随机推荐

  1. 全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系,你知道多少?

    全网最适合入门的面向对象编程教程:09 类和对象的 Python 实现-类之间的关系,你知道多少? 摘要: 本文主要对类之间的关系进行了基本介绍,包括继承.组合.依赖关系,并辅以现实中的例子加以讲解, ...

  2. 3.5 Y84-64的流水线实现

    我们终于准备好要开始本章的主要任务--设计一个流水线化的Y86-64处理器.首先,对顺序的SEQ处理器做一点小的改动,将PC的计算挪到取指阶段.然后,在各个阶段之间加上流水线寄存器.到这个时候,我们的 ...

  3. 浅谈地址,section,vstart

    地址:地址只是数字,描述各种符号在源程序中的位置,它是源代码文件中各符号偏移文件开头的距离.由于指令和变量所占内存大小不同,故他们的偏移量参差不齐.由编译器给各符号编址,编译器给程序中各符号(变量名和 ...

  4. 用 Git 操作的数据库?这个项目火了!

    # 用 Git 操作的数据库?这个项目火了!> 超级特别又实用的数据库,快来补课!Git 是一个开源的分布式版本控制系统,可以敏捷高效地管理代码,让项目代码支持同时存在多个不同的版本和分支,是程 ...

  5. oeasy教您玩转vim - 67 - # 批量替换

    ​ 批量替换 回忆上次 我们可以用vimdiff快速的比较文件 这很实用!!! 实用的一些跳转方式 遍历所有的修改change ]c 下一条修改 [c 上一条修改 遍历所有的函数method ]m 下 ...

  6. 开源!开源一个flutter实现的古诗拼图游戏

    去年(2023年)年底我初学flutter,看了一些文档和教程,想找个东西*练练手. 小时候看过一个关于历史名人儿时事迹的短片,有一集是讲*总理的,有一个细节我记得很清楚:幼年***经常要做一个游戏- ...

  7. SUM_ACM-Codeforces Round 941 (Div. 2)

    A Card Exchange https://codeforces.com/contest/1966/problem/A 思路:找规律,如果b>a,输出a,如果a中有大于等于b个数,输出b-1 ...

  8. JavaScript小技巧~将伪数组转成数组的方法

    伪数组:具有数组结构但是五数组相关方法的类数组结构: 方式1:Array.from() 方式2:Array.prototype.slice.call(); 用方式1吧,好记简单

  9. Vue 基于vue-codemirror实现的代码编辑器

    基于vue-codemirror实现的代码编辑器 开发环境 jshint 2.11.1 jsonlint 1.6.3 script-loader 0.7.2 vue 2.6.11 vue-codemi ...

  10. C#开源、简单易用的Dapper扩展类库 - Dommel

    前言 今天大姚给大家分享一个C#开源(MIT License).免费.简单易用的Dapper扩展类库,帮助.NET开发者使用Dapper的CRUD操作变得更简单:Dommel. 项目特性 Dommel ...