首页 > 解决方案 > 如何用python解析这种PDF

问题描述

我正在尝试使用 python 解析此处找到的 pdf:https : //corporate.lowes.com/sites/lowes-corp/files/annual-report/lowes-2020ar.pdf。根据复制/粘贴测试,它似乎是基于文本的,并且前几页使用例如 pymupdf 解析得很好。

但是,大约在第 12 页之后,文档编码似乎发生了内部变化。例如,第 18 页的本节:在此处输入图像描述

它看起来像文本,但是当您复制并粘贴它时,它变成:

%A>&1;<81
FB9#4AH4EL

%BJ8XF8@C?BL874CCEBK<@4G8?L
9H??G<@84FFB6<4G8F4A7
C4EGG<@84FFB6<4G8F

CE<@4E<?L<AG;8.A<G87,G4G8F4A74A474"A9<F64?
J88KC4A787BHEJBE>9BE68
;<E<A:4FFB6<4G8F<AC4EGG<@8
F84FBA4?
4A79H??G<@8CBF<G<BAFGB9H?9<??G;8F84FBA4?78@4A7B9BHE,CE<A:F84FBA
<A6E84F8778@4A77HE<A:G;8(/"C4A78@<6
4F6HFGB@8EF9B6HF87BA;B@8<@CEBI8@8AGCEB=86GF
4A74A4G<BAJ<78899BEGGB@B7<9LBHEFGBE8?4LBHG

这里发生了什么?我需要使用 OCR 来解析这样的文件吗?或者有什么方法可以将上面的内容翻译回文本?

标签: pythonpdf

解决方案


造成这种情况的一个可能原因是 PDF 中的字体嵌入使用了自定义编码。如果您正在寻找一个简单的解决方案,请查看 tika 包,它非常适合阅读 pdf。

from tika import parser # pip install tika

raw = parser.from_file('sample.pdf')
print(raw['content'])

Tika 是用 Java 编写的,因此您需要安装 Java 运行时


推荐阅读