乐趣区

关于前端:文档内容结构化在百度文库的技术探索

导读:简述百度文库对于各类文档的转码和展示历程,晚期的版式数据满足了 PC 端的各类文档浏览体验,随着业务倒退的需要迭代,无线端的文档浏览体验亟需晋升。版式数据转流式数据过程中,繁难的内容结构化满足了 pdf 数据在无线端的重排版。底层解析 ooxml 数据和粗疏的内容结构化,则带来了不错的 word 无线端重排版成果。从 chart 图片中“从无到有”抽取结构化的元数据,更为用户与文档的互动关上了设想空间

全文 3724 字,预计浏览工夫 9 分钟。

一、百度文库中各类文档的展示

文库有数十亿海量文档,包含 word,ppt,excel 和 pdf 等十几种常见办公文档,外围根底服务是文档转码和展示。

为了对立十几种文档的转码和展示计划,不依赖于原文件格式的开档软件,技术调研后,最终计划为任意文档转码为 pdf 格局,解析开源的 pdf 数据格式,加工后造成文库自有文档格局,在 pc 端、无线端排版和渲染。

PC 端渲染采纳源于 PDF 的 xreader 版式数据,版式数据指的是每个元素(文字、图片)都有一个坐标信息和元素的宽高信息,以及其余的形容信息。每一个文本片段、图片和其余矢量元素等依据坐标信息在以后版面固定显示。因而,版式数据比拟适宜用于在 PC 端等比例展示各类文档,版式排版的还原成果较好。

无线端的屏幕尺寸广泛较小,如果将版式数据等比例放大后排版,整个版面中的文字、公式较小,给浏览带来不便,如图 1 所示。尽管能够放大显示,但显然减少了用户的操作老本。

图 1 无线端采纳版式数据进行等比例放大的版式排版

比拟现实的计划是将版式数据转换成流式数据,依据不同的无线端屏幕尺寸,进行重排版。区别于版式数据中每个元素都有以后版面的坐标信息,流式数据没有坐标信息,有的是章节、栏、段落、公式和表格等结构化信息,大量的数据结构信息将最根底的文本、图片关联起来,造成结构化的文档内容,适宜各种屏幕尺寸的自适应重排版。

二、文档内容结构化的技术摸索

2.1 Retype 流式数据(基于 xreader 版式数据)

文库晚期文档内容“版式转流式”的计划,遍历 xreader 版式数据中的每个元素,提取坐标信息 x,y 和元素的宽高 w,h 信息。比拟靠近的 y 认为是同一行数据,y 靠近的状况下,依据 x 和 w 拼接相邻的文本元素、连贯相邻的文本和图片。而后就失去以后版面的所有行数据结构 line,依据每个 line 的 y 和 h 信息,将相邻 line 拼接为段落。通过判断以后 line 的 x + w 数据小于版面宽度、以非凡标点结尾,以及下一个 line 的 x 信息蕴含着段首缩进等状况,从而断定一个段落的完结。

以上是“版式转流式”计划的通用思路,当文档的版面构造较为简单,比方论文、文献等存在大量多栏、图文绕排、表格脚注尾注的状况时,还须要进行 range 辨认的预处理,将整个版面剖析、切割成多个 range 构造,在每个 range 内再进行“版式转流式”的通用计划,能力失去较好的成果。

这种计划从版式数据中提取了“段落、行“等结构化信息,有助于流式排版。但一些 case 显示这些结构化信息的准确率达不到百分百正确,存在“段落被强制换行,inline 图片地位谬误”等状况,且对“公式、图表 chart 和表格”等简单结构化信息的提取能力较弱。

不同于 pdf 文档中只有元素绝对于版面的坐标信息且不足内容结构化信息,office 文档如 word 文档,源文档中存在结构化信息,只是在 word 转 pdf 的转码过程中失落了这些信息。因而,对文库占比拟多的 word 文档提取结构化信息和晋升无线端流式排版成果,成为阶段性的重要指标。

2.2 BDJson 流式数据(基于 ooxml 数据)

微软 office 历史悠久,word 存在许多版本,简化辨别为 doc 二进制复合文档格局和 docx 的 ooxml 文档格局。Doc 二进制复合文档格局较为简单,且是微软的闭源我的项目,解析和转码的老本较高。为了简化计划,将 doc 转换成 docx,而后外围计划就是解析 docx 格局,转码,产出 BDJson 格局流式数据。

OOXML 是开源我的项目,基于 zip+xml 的格局,一般文本及其字符属性、段落属性的读取和解析较为不便,其自带章节、段落和表格等结构化信息,便于流式排版。基于本次排版需要,以及思考到未来有 word 在线编辑的场景,方案设计为语义级别的准确解析文档,抽取内容和属性,组建 office 数据结构。

章节、段落等数据结构,遵循 ooxml 规范,从 Document.xml 中解析数据后即可组装成对应的数据结构。页眉页脚、脚注尾注等数据结构,Document.xml 中存储的只是索引和根本信息,具体的区域内容须要从其余的 xml 文件中获取,依照索引的对应关系进行拼装,并插入到注释中的具体位置。

一些数据结构因 office 构造与 html 构造的差异性,须要做一些适配工作。例如常见的我的项目符号与编号,在 word 中能够有 9 层构造,每一层构造都有字符属性、段落属性、tab 设置和图片编号等,须要兼容映射到 html 的 ol、ul 繁难构造。表格中合并单元格的行跨、列跨和暗藏被合并单元格,在 office 和 html 中也是有很大差别,须要遍历整个表格,计算转换后进行兼容性转码。

此外,对一些在线编辑场景中波及的数据结构,也做了提取和转码,例如将 word 中反对的多套公式数据“域公式、mathtype 公式,omath 公式”对立转码成 LaTex 数据格式,不仅便于后续编辑,而且能够适配注释的字体和大小,整体排版成果更对立。

以上技术计划的施行,完满提取了 word 文档中的结构化信息,优化了现有文档转码和展示的流程,如图 2 所示。文档内容结构化信息,使得 word 文档无线端能够实现自适应的流式排版,大为晋升了展现成果,如图 3 所示。

图 2 文档转码和展示(版式,流式)

图 3 文档无线端流式排版和公式 LaTex 展示


2.3 chart 图 片(或 pdf 数据)中提取结构化数据

在论文、期刊和财经研报等特定类型的 pdf 文档中,常常会有一些图表 chart 信息,这些图表个别以“无构造的 pdf 数据、图片、背景图”的模式呈现。提取这些图表信息,将元数据导入到 excel 中,让用户能够从新编辑、观测和生成新的 chart,具备较大的产品价值。

现有的一些工具,个别都是让用户对文档中 chart 所在的区域 range 手动截图,而后人工抉择坐标轴原点,输出坐标轴刻度等信息,对 chart 描边等一系列繁琐的操作,且数据提取的正确率不高。

Chart 图片或无构造的 pdf 数据中提取结构化元数据的技术计划能够简化为两大模块:range 辨认,元数据提取。

2.3.1 Range 辨认

以 pdf 文档举例,首先遍历本页所有元素,将文本碎片 span、图片等框选起来。原始 span 按 y,x 进行相邻 merge,失去大一些的 fragment, 进而聚合成 line。line 区域按文本数量和地位等信息,进行有效性判断,有些可打消。

搜寻残余空间内的空白区域,作为 range 的候选区域。获取页面设置信息,确定页面内容范畴。从上往下遍历,先把整行空白的 range 辨认进去。按行遍历,如果 line 两端尚有空余,加 2 个两端的 range。用以后的 line 去碰撞已有的 range,若相交,将相交局部消去,会把原有 range 切成多个新的 range。至此,失去紫色的 range 候选区域汇合,如图 4 所示。

图 4 range 候选区域汇合

遍历 range 候选区域汇合,按 range 的地位、宽高进行相邻 range 的合并和重新组合,失去新的一组 range,如图 5 所示。

图 5 range 候选区域汇合(合并后)

过滤 range(依据矩形大小、地位、前后的文本 line,ocr 的文本数量等信息),同时对 range 的边缘进行白边切割,最初失去无效 range,如图 6 所示。

图 6 range 候选区域汇合(过滤后)

2.3.2 元数据提取

通过 range 辨认模块产出的 range 汇合,能够进行下一步的元数据提取。不是所有 range 里都是 chart,可能是个简略图片、流程图等。

首先根据 range 信息,对以后页面截取 range 对应的图片,进行图像剖析,初步断定是否是 chart 图片并进行初步的 chart 分类,例如柱状图、饼图,如图 7 所示。

图 7 以图片模式展示的 chart

以柱状图举例,基于像素剖析和边缘提取算子的预处理,辨认出 x 轴、y 轴的候选线条,并根据长度、地位等信息,进行删选,最初失去 xy 轴,组成坐标体系。扫描 xy 轴上的刻度线,此时有较多烦扰,可能误差较大,通过像素比照和穿插验证,给轴线补充上刻度线。

残缺、正确的坐标体系对于后续的 chart 元数据提取很重要。基于坐标体系,可将整个图片切割成多个 subRange,对 subRange 中的小图进行 ocr,获取其中的文本,即可拼装成 chart 的数据项、各个数据点,通过一系列的数据改正和重新组合,从而失去整个 chart 的元数据,如图 8 所示。

图 8 从 chart 图片中提取的元数据

===

三、文档内容结构化的后续倒退

随着业务的倒退,基于文档整页展示的根底上,如何给用户更好的文档展示和互动成果,对文档转码和展示技术提出了更高的要求,而这所有的根底正是提取细粒度的文档元素和对文档内容进一步的结构化辨认和提取。

招聘信息

百度 - 文库研发部,团队致力于建设业界当先的在线互动式文档、音频等常识分享平台,十年来会集了超 9 亿份高价值文档资料,领有近 40 万认证作者和 2 万家业余权威机构,已成为中国当先的文档与常识服务平台。百度文库保持以“让每个人平等地晋升自我”为指标,致力将常识尽可能地分享到每一个须要的角落。

诚邀 iOS & Android 小伙伴。

关注百度 Geek 说,公众号菜单栏点击内推即可。

举荐浏览

|从 Web 图标演进历史看最佳实际 | 文末送书

|百度内容风控词表那些事儿 | 文末送书

|揭秘百度微服务监控:百度游戏服务监控的演进

———- END ———-

百度 Geek 说

百度官网技术公众号上线啦!

技术干货 · 行业资讯 · 线上沙龙 · 行业大会

招聘信息 · 内推信息 · 技术书籍 · 百度周边

欢送各位同学关注

退出移动版