Извлечение / очистка PDF с помощью Texttract — текст не печатается

Я пытаюсь извлечь текст из PDF-файлов doem с помощью Textract. Однако, когда я печатаю текст в конце кода, он просто печатает много пустых мест. Может ли кто-нибудь указать мне направление происходящего? (текст не = "", кстати)

import os
import codecs
import PyPDF2 
import textract
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords

for filename in os.listdir('Harbour PDF'):
    if '.DS_Store' == filename:
        continue
    filename = 'Harbour PDF/' + filename
    print(filename)

    pdfFileObj = open(filename,'rb')

    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

    num_pages = pdfReader.numPages
    count = 0
    text = ""

    while count < num_pages:
        pageObj = pdfReader.getPage(count)
        count +=1
        text += pageObj.extractText()


    if text != "":
        text = text
    else:
        text = textract.process(pdfFileObj, method='tesseract', language='eng')

    print(text)

person Rasmus Engelbrecht Sørensen    schedule 15.01.2019    source источник


Ответы (1)


2 функции, которые я использую через python (второй нужен tesseract). Ну, на самом деле я предпочитаю tesseract вместо pdfminer, но они фактически делают то же самое. Не уверен, что не так с вашим кодом, но я считаю, что это альтернативные эквиваленты.

from PIL import Image
import pytesseract
import cv2
import os
import subprocess

from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage

#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)

    infile = open(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

def to_txt(pdf_path, output_dir, name=None):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    if name == None:
        parts = pdf_path.split('\\')
        fname = parts[-1][:-4] + '.txt'
        fname = fname.replace(" ", "_")
        end = output_dir + fname
    else:
        if name[-4:] != '.txt':
            name += '.txt'
        end = output_dir + name
    cmd = ['pdftotext', pdf_path,
           end]
    subprocess.call(cmd)
    print('Converted')

person Evan Mata    schedule 22.03.2019