gar*_*ry 19 pdf text extract python-3.x pdfminer
我已经遵循了几个教程但是我无法运行此代码块,我从StringIO到BytesIO进行了必要的切换(我相信?)
我不确定为什么'香蕉'什么都不打印,我认为错误可能是红色的鲱鱼?是不是跟着python2.7教程并试图将它翻译成python3?
errors: File "/Users/foo/PycharmProjects/Try/Pdfminer.py", line 28, in <module>
banana = convert("A1.pdf")
File "/Users/foo/PycharmProjects/Try/Pdfminer.py", line 19, in convert
infile = file(fname, 'rb')
NameError: name 'file' is not defined
Run Code Online (Sandbox Code Playgroud)
脚本
from io import BytesIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def convert(fname, pages=None):
if not pages:
pagenums = set()
else:
pagenums = set(pages)
output = BytesIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = file(fname, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
output.close
return text
banana = convert("A1.pdf")
print(banana)
Run Code Online (Sandbox Code Playgroud)
这个变体也会发生同样的事情:
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import BytesIO
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = BytesIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = file(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
fp.close()
device.close()
retstr.close()
return text
Banana = convert_pdf_to_txt("A1.pdf")
print(Banana)
Run Code Online (Sandbox Code Playgroud)
我试过搜索这个(大多数pdfminer代码来自这个或这个)但没有运气.
任何见解都表示赞赏.
干杯
pya*_*ano 31
有是一个解决方案的Python 3.5:你需要pdfminer.six.在win10下我可以轻松安装它
pip install pdfminer.six
Run Code Online (Sandbox Code Playgroud)
您可以使用检查已安装的版本
pdfminer.__version__
Run Code Online (Sandbox Code Playgroud)
我还没有对它进行过密集测试.但我可以运行以下代码进行转换pdf→text和 pdf→html
pya*_*ano 13
改进的解决方案(Dez 2016)
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import HTMLConverter,TextConverter,XMLConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import io
def convert(case,fname, pages=None):
if not pages: pagenums = set();
else: pagenums = set(pages);
manager = PDFResourceManager()
codec = 'utf-8'
caching = True
if case == 'text' :
output = io.StringIO()
converter = TextConverter(manager, output, codec=codec, laparams=LAParams())
if case == 'HTML' :
output = io.BytesIO()
converter = HTMLConverter(manager, output, codec=codec, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = open(fname, 'rb')
for page in PDFPage.get_pages(infile, pagenums,caching=caching, check_extractable=True):
interpreter.process_page(page)
convertedPDF = output.getvalue()
infile.close(); converter.close(); output.close()
return convertedPDF
#//////////// main ///////////////////////
filePDF = 'myDir//myPDF.pdf' # input
fileHTML = 'myDir//myHTML.html' # output
fileTXT = 'myDir//myTXT.txt' # output
case = "HTML"
if case == 'HTML' :
convertedPDF = convert('HTML', filePDF, pages=[0,1])
fileConverted = open(fileHTML, "wb")
if case == 'text' :
convertedPDF = convert('text', filePDF, pages=[0,1])
fileConverted = open(fileTXT, "w")
fileConverted.write(convertedPDF)
fileConverted.close()
#print(convertedPDF)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30815 次 |
| 最近记录: |