gpt4 book ai didi

java - iText java 无法正确解析 PDF/中的文本

转载 作者:行者123 更新时间:2023-12-02 03:18:33 26 4
gpt4 key购买 nike

我正在使用 iText Java API 从 PDF 中提取文本。

String text =  PdfTextExtractor.getTextFromPage(reader,i);

源PDF内容:

1.2 提交内容

生成的文本:

提交内容
1.2

提取的文本被分成两行,文本的顺序也困惑。

有人可以帮我理解我做错了什么吗?

Src pdf 文件链接 - https://www.dropbox.com/s/vc9it3c7856ejli/testPDF.pdf?dl=0

从 iText 生成的目标文本文件 - https://www.dropbox.com/s/ps2l9yz5ufuup01/test.txt?dl=0

但是当我使用 PDFClown、OCROnline 等其他 PDF API 进行测试时,它可以按预期工作。

请帮忙

谢谢

最佳答案

原因

iText 以其标准的文本提取策略进行提取

Screenshot

作为

SUBMITTALS
1.2

因为“1.2”实际上位于“SUBMITTALS”下方(分钟):

q .75000 0 0 .75000 0 792 cm 
1 1 1 rg 0 0 816 -1056 re f
q .32000 0 0 .32000 0 0 cm
q
...
q .20823 0 0 .20807 0 0 cm
BT /F2 220 Tf 0 g 2340 -6628 Td(SUBMITTALS) Tj ET Q
q .20823 0 0 .20807 0 0 cm
BT /F2 220 Tf 0 g 1440 -6634 Td(1.2) Tj ET Q

正如您在 PDF 内容绘制说明的摘录中所看到的,“1.2”是在缩放的 y 坐标 -6634 处绘制的,而“SUBMITTALS”是在 -6628 处绘制的,即“1.2”是在 6 缩放处绘制的“提交”下方的单位。

这使得 iText 将其放在单独的后续行中。

解决方案

您可以使用HorizontalTextExtractionStrategy2来自this answer而不是默认的提取策略,参见。 TextExtraction.java test testTestPDF ,并获得以下输出:

1.2 SUBMITTALS 

(有关使用该策略的详细信息,请授予 answer mentioned aboveHorizontalTextExtractionStrategy2 是该答案的“更新:LocationTextExtractionStrategy 中的更改”部分中的更新策略。)

关于java - iText java 无法正确解析 PDF/中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com