仓库源文站点原文


title: "文档目录抽取" categories:


文档结构化是很暧昧的词, 它可能的意思很多, 不过本文只考虑目录抽取.

结构化文档由各级章节标题和段落等逻辑结构组成, 比如对 HTML 来说, 逻辑结构包括 <body> <h1> <p> 等标签. 文档结构化任务基本等价于目录抽取, 因为识别出标题后剩下的就是段落. 这个领域可供搜索的关键词包括 document structure recognition, document layout analysis (版面分析) 等. 意义: 便于抽取信息, 高度定制化的展示等.

<!-- more -->
<body>

<h1>Structured document</h1>
<p>A <strong class="selflink">structured document</strong> 
is an <a href="/wiki/Electronic_document" title="Electronic document">electronic document</a> 
where some method of 
<a href="/wiki/Markup_language" title="Markup language">markup</a> 
is used to identify the whole and parts of the document 
as having various meanings beyond their formatting.</p>

</body>

PDF 解析

Java 的 Apache PDFBox 可以得到 pdf 底层信息, 然后进行推断重建文档结构. 可以得到的信息包括

纯 PDF 解析版面分析算法的例子可以参考 这里, 连字成行, 连行成段.

开源工具 pdf2htmlEX 可以高质量地还原 pdf 排版, 但是很慢而且几乎无法从其生成的 html 中读出结构信息, 可定制性低, 难以后续处理, 文件大.

Python 包

<!-- ### 其他 - 根据字体可以判别粗体/斜体与否, 比如 [这里](https://github.com/jsvine/pdfplumber/issues/299) 粗体直接有 bold, [这里](https://github.com/jsvine/pdfplumber/issues/368) 说斜体可以从 fontname 判断, 但实际好像不行. [下划线的判别方法](https://github.com/jsvine/pdfplumber/issues/368). - Poor man's bold 会以重复相同的字两次 (平移微小的量) 实现. -->

难点

相关比赛

工业界实践

好像没有直接的识别标题层次.

其他