无法使我的脚本以所需格式打印输出

Can't make my script print output in the desired format

我正在尝试从 pdf 文件中提取特定部分的文本。我已经使用 PyPDF2 库来做到这一点。但是,当我执行下面的脚本时,我可以看到我想要获取的内容正在笨拙地打印在控制台中。

到目前为止我写了:

import io
import PyPDF2
import requests

URL = 'http://www.ct.gov/hix/lib/hix/CT_DSG_-12132014_version_1.2_%28with_clarifications%29.pdf'

res = requests.get(URL)
f = io.BytesIO(res.content)
reader = PyPDF2.PdfFileReader(f)
contents = reader.getPage(0).extractText()
print(contents)

我的输出:

ACCESSHEALTHCTConnecticutAllPayersClaimsDatabaseDATASUBMISSIONGUIDE
December5,2013
Version1.2(withclarifications)

我想抓取的输出:

ACCESS HEALTH CT
Connecticut All Payers Claims Database
DATA SUBMISSION GUIDE
December 5, 2013
Version 1.2 (with clarifications)

这是 pyPDF2 的问题,原因是 PyPDF 不读取换行符。或者,您可以 pdftotext

简单明了,您可以遍历页面或提取一页。

import io
import requests
import pdftotext
URL = 'http://www.ct.gov/hix/lib/hix/CT_DSG_-12132014_version_1.2_%28with_clarifications%29.pdf'
res = requests.get(URL)
f = io.BytesIO(res.content)
pdf = pdftotext.PDF(f)
print(pdf[0])
# Iterate over all the pages
# for page in pdf:
#     print(page)

如果安装其他软件包导致依赖性问题,我会建议 PDFMiner

您可以通过 pip install pdfminer.six 为 python 3.7 安装它,我已经测试过并且它可以在我的 python 3.7.

上运行

获取第0页的代码如下

import io
import requests
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser

URL = 'http://www.ct.gov/hix/lib/hix/CT_DSG_-12132014_version_1.2_%28with_clarifications%29.pdf'

res = requests.get(URL)
fp = io.BytesIO(res.content)

rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)

page_no = 0
for pageNumber, page in enumerate(PDFPage.get_pages(fp)):
    if pageNumber == page_no:
        interpreter.process_page(page)

        data = retstr.getvalue()

print(data.strip())

产出

ACCESS HEALTH CT 

Connecticut All Payers Claims Database 

DATA SUBMISSION GUIDE 

December 5, 2013 

Version 1.2 (with clarifications) 

PDFMiner 的优点在于它可以直接读取您的页面,并且完全专注于获取和分析文本数据。