pd3f-core
实验性的,谨慎使用。
pd3f-core
是一个 Python 包,用于使用语言模型从PDF中重建原始连续文本。 pd3f-core
假定您的 PDF 是基于文本的或已经是 OCRd。 pd3f-core
是 pd3f 的核心:一个完整的基于 Docker 的文本提取管道(包括 OCR)。
pd3f-core
首先使用 Parsr 将 PDF 分成行和段落。然后,它使用 Python 包 dehyphen 以最可能的方式重建段落。该概率是通过使用 Flair 基于字符的语言模型计算困惑度得出的。不必要的连字符被删除,空格或换行符被保留或删除,具体取决于周围的单词。
它主要是为德语开发的,但也应该适用于其他语言。该项目仍处于早期阶段。预计粗糙的边缘和快速的变化。
pd3f-core的API文档:https://pd3f.github.io/pd3f-core/index.html
pd3f 的文档(the ):https://pd3f.com/docs/
检查是否可以通过删除连字符(“-”)来连接两行。
连接行时,决定是添加简单空格 (' ') 还是换行 ('n')。
检查一页的最后一段和下一页的第一段是否可以连接。
为了连接段落(和反向分页符),检测脚注并将其转换为尾注。目前,脚注被拉到文件的末尾。
如果所有页面的页眉或页脚都相同,则仅显示一次。页眉被拉到文档的开头,页脚被拉到文档的末尾。使用一些基于页脚相似性的启发式方法。 (文本的杰卡德距离,并比较重叠形状)
pip install pd3f
或者
poetry add pd3f
启动本地 Parsr 实例:
docker-compose up
(您还可以使用隧道连接远程 Parsr 实例(脚本)或选择远程地址。)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
文档中参数的说明:https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
使用 CUDA 可以加快 Flair 的评估速度。但你需要一个(昂贵的)GPU。您需要使用 CUDA 设置 GPU。这是 Ubuntu 18.04 的指南
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(示例)pd3f-core
: poetry add pd3f
Poetry 意识到它是在 conda 虚拟环境中运行的,因此它不会创建新的环境。由于设置 CUDA 很困难,因此请使用最简单的方法(使用 conda)安装它。
pd3f-core
的核心是 Parsr 的 JSON 输出。关于如何以及为何选择某些事物的一些评论。 Parsr 关于不同模块的文档
Parsr 有几个模块可以将段落分类为某些类型。他们提供列表检测和标题检测。根据我的经验,两者的准确性都太低,所以我们现在不使用它。这也意味着所有提取的(输出)文本都是平面的(没有标题、不同的格式等)。
我们启用绘图 + 图像检测,因为我们可能需要了解哪一段在哪一段后面。当决定是否加入段落时,这可能会有所帮助。但当激活fast
设置时它会被丢弃。
JSON 输出中有一个字段pageNumber
。这来自页面检测模块。所以pageNumber
是从每个页面的页眉/页脚导出的。所以它可能与页数组中的索引不同。不要在 JSON 输出中中继pageNumber
。
words-to-line-new
就是这样使用的。如果不使用的话,不会有错误,但精度会降低。
" words-to-line-new " ,
[
" reading-order-detection " ,
不要用 Parsr 进行 OCR,因为结果比 OCRmyPDF 差(因为后者使用图像预处理)。
安装和使用诗歌。
Affero 通用公共许可证 3.0