【发布时间】: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)
非常感谢您的帮助!
【问题讨论】: