web-dev-qa-db-fra.com

Comment utiliser pdf2txt.py de pdfminer.six dans le script python et la ligne de commande extérieure?

Je sais comment utiliser l'outil pdf2txt.py de pdfminer.six en ligne de commande; cependant, j'ai beaucoup de fichiers PDF à convertir en fichiers txt et je ne peux pas le faire un par un en ligne de commande. Je n'ai pas trouvé comment utiliser cet outil dans la réalité python. Des idées?

5
Ashley Liu

La bonne nouvelle est que vous pouvez utiliser la bibliothèque PDFMiner pour recréer tous les attributs/commandes que vous pourriez exécuter avec pdf2text sur la ligne de commande. Voir ci-dessous pour un exemple de base que j'utilise:

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 pdf_to_text(path):
    manager = PDFResourceManager()
    retstr = BytesIO()
    layout = LAParams(all_texts=True)
    device = TextConverter(manager, retstr, laparams=layout)
    filepath = open(path, 'rb')
    interpreter = PDFPageInterpreter(manager, device)

    for page in PDFPage.get_pages(filepath, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    filepath.close()
    device.close()
    retstr.close()
    return text


if __name__ == "__main__":
    text = pdf_to_text("yourfile.pdf")
    print(text)

Si vous devez appliquer des numéros de page ou des mots de passe, ce sont des paramètres facultatifs dans PDFPage.get_pages. De même, si vous devez effectuer des modifications de mise en page, telles que tous les textes ou la taille de la marge, il existe des attributs facultatifs pour l'initialiseur LAParams.

8
pseudoku