将 PDF 转换为文本:Adobe Reader 与 Python 库

Convert PDF to text: Adobe Reader vs. Python libraries

我有一个 PDF,我尝试将其转换为文本以供进一步处理。

PDF 的结构稳定但复杂,因为它还包含元素和图形,有时还用作特定位置所写文本的背景。因此,我想提取尽可能多的文本。

我首先尝试使用 Adob​​e Reader 功能将 PDF 另存为文本,结果不错,但不允许此过程完全自动化。至少我不知道如何通过命令行与 Adob​​e Reader 交互,或者。

因此,我尝试了一些为此目的设计的 python 库,但它们似乎有不同的方法将 pdf 转换为文本。我尝试了 PdfMiner、PyPDF2 和 pdftotext。 None 个库给我的结果与 Adob​​e Reader 相同。

PDF 如下所示(由于不相关的敏感数据,略有裁剪):

Adobe 提取以下文本:

OCT 15° (4.3 mm) ART (25) Q: 34 [HR]

ILMILM200μm200μm 04590135180225270315360

TMPTSNSNASNITITMP

1000 800 600 400 200 0

Position [°]

CC 7.7 (APS)

G227(12%) T206(54%) TS226(20%) TI304(38%) N203(5%) NS213(6%) NI276(12%) Segmentationunconfirmed! Classification MRW Within Normal Limits

OCT ART (100) Q: 31 [HS]

ILMILMRNFLRNFL200μm200μm 111 04590135180225270315360

300 240 180 120 60 0

TMP TS NS NAS NI TI TMP

Position [°]

CC 7.7 (APS)

Classification RNFLT Outside Normal Limits

G78<1% T62(15%) TS103(5%) TI134(10%) N65(7%) NS77(3%) NI73(3%) Segmentationunconfirmed! RNFL Thickness (3.5 mm) [μm]

WithinNormalLimits(>5%) Borderline(<5%)OutsideNormalLimits(<1%)

而例如,PDFminer 提取:

Average Thickness [�m]

Vol [mm�] 8.26

200 �m 200 �m

OCT 20.0� (5.6 mm) ART (21) Q: 25 [HS]

267 1.42

321 0.50

335 0.53

299 1.59

Center:

Central Min:

Central Max:

222 �m

221 �m

314 �m

Circle Diameters: 1, 3, 6 mm ETDRS

292 1.55

331 0.52

272 0.21

326 0.51

271 1.44

ILMILM

BMBM

200 �m 200 �m

这有很大的不同。这有什么原因吗?您知道任何 python 库具有与 Adob​​e Reader 相同的能力将 PDF 转换为文本吗?

不一定解释为什么 Adob​​e Reader 从 pdf 中提取文本的方式与某些 python 库不同,但我已经使用 tika 实现了一个非常好的解决方案。

这是提取的 tika:

OCT 15� (4.2 mm) ART (26) Q: 31 [HR]

NITSTMP NAS TMPTINSM in

im u

m R

im W

id th

[ �

m ]

1000 800 600 400 200

0

Position [�]

36031527022518013590450

ILMILM

RNFLRNFL

200 �m200 �m

OCT ART (100) Q: 27 [HS]

NITSTMP NAS TMPTINS

R N

F L T

h ickn

e ss (3

.5 m

m ) [�

m ]

300 240 180 120 60 0

Position [�]

36031527022518013590450

40

G 240

(10%)

T 239

(70%)

TS 213 (9%)

TI 285

(22%)

N 230 (5%)

NS 209 (3%)

NI 283 (9%)

CC 7.7 (APS)

Segmentation unconfirmed!

Classification MRW

Borderline

G 78

<1%

T 58

(8%)

TS 91

(2%)

TI 124 (6%)

N 64

(8%)

NS 110

(43%)

NI 71

(4%)

CC 7.7 (APS)

Segmentation unconfirmed!

Classification RNFLT

Outside Normal Limits

Within Normal Limits (>5%)

Borderline (<5%) Outside Normal Limits (<1%)

Reference database: European Descent (2014)