Как извлечь текст из онлайн PDF с помощью pdfminer в python

Я хочу извлечь текст из онлайн-PDF с помощью pdfminer, используя приведенный ниже код, он не показывает ошибок, но ничего не выводит

from pdfminer.pdfpage import PDFPage
from urllib import request
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open

def readPDF(pdfFile):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)
    PDFPage.get_pages(rsrcmgr, device, pdfFile)
    device.close()
    content = retstr.getvalue()
    retstr.close()
    return content

pdfFile = request.urlopen("https://www.jstage.jst.go.jp/article/cancer/9/0/9_KJ00003588219/_pdf/-char/en")
outputString = readPDF(pdfFile)
print(outputString)

person Srinath Neela    schedule 21.08.2019    source источник


Ответы (2)


Я предлагаю вам использовать библиотеку pdftotext для извлечения текста.

import pdftotext
fh = open(document_name, 'rb')
pdf = pdftotext.PDF(fh)
text = ""
for page in pdf:
    text += page
print(text)
person Vaibhav Mishra    schedule 21.08.2019
comment
pdftotext не устанавливается в Windows, я пробовал - person Srinath Neela; 21.08.2019
comment
Пожалуйста, перейдите по этой ссылке, это может быть полезно для вас из-за poppler"> stackoverflow.com/questions/52336495/ - person Vaibhav Mishra; 21.08.2019
comment
path = 'localpath\\pdftotext.exe' import subprocess subprocess.call([path]) fh = open(jstage.jst.go.jp/article/cancer/9/0/9_KJ00003588219/_pdf/-char/, 'rb') pdf = subprocess.PDF(fh) text = для страницы в pdf: текст += печать страницы(текст) - person Srinath Neela; 21.08.2019
comment
как только проверите приведенный выше код, он дает параметры при выполнении, можете ли вы мне помочь в этом - person Srinath Neela; 21.08.2019
comment
Привет. Извините за поздний ответ, пожалуйста, проверьте, когда вы получаете файл PDF в переменной fh или нет. - person Vaibhav Mishra; 22.08.2019

Следующий код работает в Python 3.7.4

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.layout import LAParams
from pdfminer.converter import TextConverter
from pdfminer.pdfpage import PDFPage
import io
import urllib.request
import requests


def pdf_to_text(pdf_file):
    text_memory_file = io.StringIO()

    rsrcmgr = PDFResourceManager()
    device = TextConverter(rsrcmgr, text_memory_file, laparams=LAParams())
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    # get first 3 pages of the pdf file
    for page in PDFPage.get_pages(pdf_file, pagenos=(0, 1, 2)):
        interpreter.process_page(page)
    text = text_memory_file.getvalue()
    text_memory_file.close()
    return text

# # online pdf to text by urllib
# online_pdf_file=urllib.request.urlopen('http://www.dabeaz.com/python/UnderstandingGIL.pdf')
# pdf_memory_file=io.BytesIO()
# pdf_memory_file.write(online_pdf_file.read())
# print(pdf_to_text(pdf_memory_file))


# online pdf to text by requests
response = requests.get('http://www.dabeaz.com/python/UnderstandingGIL.pdf')
pdf_memory_file = io.BytesIO()
pdf_memory_file.write(response.content)
print(pdf_to_text(pdf_memory_file))
person Alpha    schedule 10.02.2020