【问题标题】:PDF data extraction with Python 3.4使用 Python 3.4 提取 PDF 数据
【发布时间】:2016-04-03 17:15:14
【问题描述】:

背景 我正在使用 Python 3.4、PyPDF2 和正则表达式从以下 PDF 第 1 页的表格中提取数据:

http://minerals.usgs.gov/minerals/pubs/commodity/gold/mcs-2015-gold.pdf.

import PyPDF2
import re

gold_pdf = r'C:\Users\xxxxx_x\xxxxxxx\mcs_gold_2015.pdf'
pdfFileObj = open(gold_pdf,'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

pageObj = pdfReader.getPage(0)
pageObj.extractText()

start_pos = pageObj.extractText().index('United States\n:')
end_pos = pageObj.extractText().index('Recycling\n:')

table_text = pageObj.extractText()[start_pos:end_pos]

print(table_text)
print(re.findall(r'\d+[\d,]*\d', table_text))`

*Results* - NOTE: Scroll Left & Right
['2010', '2011', '2012', '2013', '2014', '231', '234', '235', '230', '211', '175', '220', '222', '223', '200', '198', '263', '215', '210', '200', '616', '550', '326', '315', '315', '383', '644', '695', '691', '430', '180', '168', '147', '160', '165', '8,140', '8,140', '8,140', '8,140', '8,140', '1,228',  '1,572', '1,673', '1,415', '1,270', '10,300', '11,100', '12,700', '12,958', '12,500']

问题: USGS Mineral Commodity Summary 中的更多 PDF 具有类似的结构,我试图用 PyPDF2 抓取,但它不起作用。我已经与他们核实过,并且没有任何其他格式的数据。

例如,如果您在上面的示例中使用 Silver PDF (http://minerals.usgs.gov/minerals/pubs/commodity/silver/mcs-2015-silve.pdf) 而不是 Gold PDF,我不会得到想要的结果。

NOTE: Scroll left & right
*OUTPUT from PageObj.extracttext():*
'SILVER\n \n\nDomestic Production and     Use\n:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSalient Statistics\nŠUnited States\n:2010 2011 20122013 2014e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n \n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRecycling\n:\n\nImport Sources (2010\nŒ13)\n:2\nTariff\n:\nDepletion Allowance\n:\n Government Stockpile\n:\nEvents, Trends, and Issues\n: \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFlorence C. Katrivanos\n [(703) 648\nŒ6782, fkatrivanos@usgs.gov]\n '

??? - 为什么 Silver PDF 的数据提取方式与 Gold PDF 不同

Python 3.4 使用什么 Python 库? 我无法为 Python 3.4 的 PDF 报废找到好的解决方案(请参阅以下帖子:Best tool for text extraction from PDF in Python 3.4

非常感谢您的帮助!

【问题讨论】:

    标签: python pdf pypdf


    【解决方案1】:

    我的建议是为此使用poppler 套件中的pdftotext。这在 Linux 和其他类 UNIX 系统上很常见,但也有 MS-windows 的版本available

    import subprocess as sp
    
    filename = 'C:\Users\xxxxx_x\xxxxxxx\mcs_gold_2015.pdf'
    btext = sp.check_output(['pdftotext', '-layout', filename])
    text = btext.decode('utf-8')
    

    您链接到的两个文件都使用此方法转换得很好。

    【讨论】:

    • 感谢罗兰的回复。那么是否像下载最新的 Windows 二进制文件一样简单:poppler-0.37_x86.7z 然后运行上面的代码?非常感谢您的帮助我是 Python 新手,所以我正在努力解决问题。
    • @mickey224 下载的是一个存档,您需要在某个地方解压该存档,最好在$PATH 中的目录中。您可能需要将pdftotext 更改为pdftotext.exe
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多