Конвертировать PDF файл в .txt python 3 - PullRequest
0 голосов
/ 03 марта 2020
from io import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import os
import sys, getopt

#converts pdf, returns its text content as a string
def convert(fname, pages=None):
    if not pages:
        pagenums = set()
    else:
        pagenums = set(pages)

    output = StringIO
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)

    filepath = open(fname, 'rb')
    for page in PDFPage.get_pages(filepath, pagenums):
        interpreter.process_page(page)
    filepath.close()
    converter.close()
    text = output.getvalue()
    output.close
    return text 

def convertMultiple(pdfDir, txtDir):
    if pdfDir == "": pdfDir = os.getcwd() + "\\" #if no pdfDir passed in 
    for pdf in os.listdir(pdfDir): #iterate through pdfs in pdf directory
        fileExtension = pdf.split(".")[-1]
        if fileExtension == "pdf":
            pdfFilename = pdfDir + pdf 
            text = convert(pdfFilename) #get string of text content of pdf
            textFilename = txtDir + pdf + ".txt"
            textFile = open(textFilename, "w") #make text file
            textFile.write(text) #write text to text file
            #textFile.close

pdfDir = (r"FK_EPPS")
txtDir = (r"FK_txt")
convertMultiple(pdfDir, txtDir)

Я попытался преобразовать несколько PDF-файлов с именем FK_EPPS в текстовые файлы и записать их в другую папку с именем FK_txt. Но это говорит о том, что нет таких файлов или каталогов. Я положил папку именно в эти пути. Я пытаюсь найти решение, но все равно есть ошибка. Можете ли вы помочь мне, почему это происходит?

/usr/local/lib/python2.7/dist-packages/pdfminer/__init__.py:20: UserWarning: On January 1st, 2020, pdfminer.six will stop supporting Python 2. Please upgrade to Python 3. For more information see https://github.com/pdfminer/pdfminer.six/issues/194
  warnings.warn('On January 1st, 2020, pdfminer.six will stop supporting Python 2. Please upgrade to Python 3. For '
Traceback (most recent call last):
  File "/home/a1-re/Documents/pdftotext/1.py", line 44, in <module>
    convertMultiple(pdfDir, txtDir)
  File "/home/a1-re/Documents/pdftotext/1.py", line 36, in convertMultiple
    text = convert(pdfFilename) #get string of text content of pdf
  File "/home/a1-re/Documents/pdftotext/1.py", line 21, in convert
    filepath = file(fname, 'rb')
IOError: [Errno 2] No such file or directory: 'pdf1831150030.pdf'

1 Ответ

0 голосов
/ 03 марта 2020

(Невозможно, чтобы трассировка, которую вы показываете, была правильной. С вашим примером ввода ошибка должна содержать FK_EPPS в начале.)

Вы забыли, что путь и имя файла должны быть разделены друг от друга с соответствующим разделителем для вашей ОС.

Вы могли бы это сразу увидеть, если бы распечатали значение fname в начале этой функции convert. Вы делаете ту же ошибку для имени файла текстового вывода, но это будет труднее заметить, потому что это не приведет к ошибке, а только создаст неправильное имя файла.

...