python读取pdf中的文本
python处理pdf也是常用的技术了,对于python3来说,pdfminer3k是一个非常好的工具。
pip install pdfminer3k
首先,为了满足大部分人的需求,我先给一个通用一点的脚本来读取pdf中的文本:
1.
2.from io import StringIO
3.from io import open
4.verter import TextConverter
5.from pdfminer.layout import LAParams
6.from pdfminer.pdfinterp import PDFResourceManager, process_pdf
7.
8.
9.def read_pdf(pdf):
10.# resource manager
11.rsrcmgr = PDFResourceManager()writelines在python中的用法
12.retstr = StringIO()
13.laparams = LAParams()
14.# device
15.device = TextConverter(rsrcmgr, retstr, laparams=laparams)
16.process_pdf(rsrcmgr, device, pdf)
17.device.close()
18.content = value()
19.retstr.close()
20.# 获取所有行
21.lines = str(content).split('\n')
22.return lines
23.
24.
25.
26.if __name__ == '__main__':
27.with open('t1.pdf', 'rb') as my_pdf:
28.print(read_pdf(my_pdf))
我主要是想在pdf中抽出自己想要的一些关键信息,所以需要到这些信息的共同点。幸运的是,这些关键信息的行都含有'//',所以我只需到含有'//'的行就行了,于是写了以下脚本。
这样就可以直接使用了,我们先看脚本:
1.
2.from io import StringIO
3.from io import open
4.verter import TextConverter
5.from pdfminer.layout import LAParams
6.from pdfminer.pdfinterp import PDFResourceManager, process_pdf
7.
8.
9.def read_pdf(pdf):
10.# resource manager
11.rsrcmgr = PDFResourceManager()
12.retstr = StringIO()
13.laparams = LAParams()
14.# device
15.device = TextConverter(rsrcmgr, retstr, laparams=laparams)
16.process_pdf(rsrcmgr, device, pdf)
17.device.close()
18.content = value()
19.retstr.close()
20.# 获取所有行
21.lines = str(content).split('\n')
22.
23.units = [1, 2, 3, 5, 7, 8, 9, 11, 12, 13]
24.header = ' 0cUNIT '
25.# print(lines[0:100])
26.count = 0
27.flag = False
28.text = open('', 'w+')
29.for line in lines:
30.if line.startswith(header):
31.flag = False
32.count += 1
33.if count in units:
34.flag = True
35.print(line)
36.text.writelines(line + '\n')
37.if '//' in line and flag:
38.text_line = line.split('//')[0].split('. ')[-1]
39.print(text_line)
40.text.writelines(text_line+'\n')
41.text.close()
42.
43.
44.def _main():
45.my_pdf = open('t1.pdf', 'rb')
46.read_pdf(my_pdf)
47.my_pdf.close()
48.
49.
50.if __name__ == '__main__':
51._main()
其实看到lines =  str(content).split('\n')那一行就够了,我们可以把lines都print出来,就可以看到pdf里面的内容。
这样我们就可以把pdf文件处理看作简单的字符串数据处理了。接下来的脚本操作也不用过多解释了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。