试图用python从pdf中拉出某一行文本

时间:2019-04-23 21:14:47

标签: python python-3.x pdf

im目前正在制定工作计划。我必须每天通过约50 pdf,并对其进行重命名。因此,我正在开发一个程序,以从每个pdf中提取发票编号并将其重命名为该发票编号,但目前我所能做的就是让作者创建者生产者... ect。我如何只从pdf中提取发票编号?我正在使用pypdf2

ive遍及整个互联网,但找不到任何东西。

onehotencode_along_axis(a, axis=0).view('i1')

我希望能够从pdf中提取发票编号。

1 个答案:

答案 0 :(得分:0)

您可能想为此使用正则表达式。我不知道您的PDF的确切格式,但它看起来应该像这样:

import re

pdfDocument = ''' somestuff
asdad
dasdd   Invoice Number: 678903    other stuff

rest of the stuff '''
str2 = re.search(r'Invoice Number: [0-9]*', pdfDocument)
str2 = str2.group(0)
print(str2)

这将仅返回“发票号:678903”字符串。您可能需要相应地调整正则表达式。 regexr是用于设计正则表达式的非常方便的工具

编辑:

更多有关发票编号的来源。如果它具有除十进制数字以外的一些特殊键,则必须调整正则表达式。我找到了一种可以根据文件中的位置查找值的工具,但我从未使用过它,我不知道它是否能在您的情况下工作。我也认为你必须为此付出代价。同样,我认为我不会足够信任他们来处理我的机密数据。docparser

我认为最简单的方法仍然是将pdf解析为文本并使用regexp进行搜索。我发现也许将pdf解析为txt可能对您来说很麻烦。我会为此建议使用蒂卡。如果有pip,安装起来很容易:

pip3 install tika

然后,我制作了一些虚拟的pdf文档,其中包含Latex和隐藏的发票编号: Dummy pdf

代码如下:

import re

from tika import parser

raw = parser.from_file('report.pdf')

pdfDocument = raw['content']

str2 = re.search(r'Invoice Number: [0-9]*', pdfDocument)
str2 = str2.group(0)
print(str2)