[PYTHON] Convertissez un grand nombre de fichiers PDF en fichiers texte à l'aide de pdfminer

Menu du jour

Je veux lire Une grande quantité de fichiers pdf anglais, mais je ne comprends pas les mots anglais en premier lieu. Pour l'instant, convertissez le fichier pdf en fichier texte, listez les mots et mémorisez les mots fréquemment utilisés dans l'ordre du haut. Je suis sûr que vous pouvez le lire plus rapidement! J'ai décidé de croire.

C'est pourquoi j'ai décidé de mettre beaucoup de fichiers pdf anglais dans une casserole, de les faire bouillir et de les convertir en fichiers texte. J'ai envie de faire bouillir une grande quantité de soba pour le tournoi de bowl soba.

Environnement de la table de cuisson

macOS Python3.6 anaconda

Produit alimentaire

Un grand nombre de fichiers pdf difficiles à digérer

ustensiles de cuisine

pdfminer ← Vérifiez l'URL de référence à la fin de la méthode d'installation os re

Il semble que pdfminer donne de meilleurs résultats que PyPDF2.

À quoi s'attendre en tant qu'échec de la cuisson

Veuillez noter qu'il ne correspond pas (probablement) aux phrases japonaises.

Le pot d'aujourd'hui

PdfToTextConverter.py


#! python3
# PdfToTextConverter.py
#Lire le contenu d'un fichier PDF et le sortir sous forme de fichier texte

import os
import re
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO

pdf_folder_path = os.getcwd()			                #Obtenez le chemin du dossier actuel
text_folder_path = os.getcwd() + '/' + 'text_folder'		#La notation du chemin est la spécification mac. Pour les fenêtres,'/'À'\'Correct à.

os.makedirs(text_folder_path, exist_ok=True)
pdf_file_name = os.listdir(pdf_folder_path)

#nom est un fichier PDF (se termine.pdf) renvoie TRUE, sinon FALSE est renvoyé.
#Ce message a été cité et partiellement modifié → http://qiita.com/korkewriya/items/72de38fc506ab37b4f2d
def pdf_checker(name):
	pdf_regex = re.compile(r'.+\.pdf')
	if pdf_regex.search(str(name)):
		return True
	else:
		return False

#Convertir un PDF en fichier texte
def convert_pdf_to_txt(path, txtname, buf=True):
    rsrcmgr = PDFResourceManager()
    if buf:
        outfp = StringIO()
    else:
        outfp = file(txtname, 'w')
    codec = 'utf-8'
    laparams = LAParams()
    laparams.detect_vertical = True
    device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams)

    fp = open(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    for page in PDFPage.get_pages(fp):
        interpreter.process_page(page)
    fp.close()
    device.close()
    if buf:
        text = outfp.getvalue()
        make_new_text_file = open(text_folder_path + '/' + path + '.txt', 'w')
        make_new_text_file.write(text)
        make_new_text_file.close()
    outfp.close()

#Obtenez le nom du fichier pdf dans le dossier et listez-le
for name in pdf_file_name:
	if pdf_checker(name):
		convert_pdf_to_txt(name, name + '.txt')		# pdf_Utilisez checker et TRUE (se termine.Pour pdf) procéder à la conversion)
	else:
		pass									    #Passer sinon un fichier PDF
	
	

Produit fini

Un grand nombre de fichiers texte susceptibles de provoquer des maux d'estomac

Cuisson suivante

Déplacez un grand nombre de fichiers texte dans un bol et extrayez environ 500 mots fréquemment utilisés. Rappelez-vous la signification du mot (on ne sait pas s'il est efficace pour lire rapidement des phrases en anglais)

Références, URL de référence

http://qiita.com/korkewriya/items/72de38fc506ab37b4f2d → La partie qui convertit un fichier pdf en fichier texte est citée (partiellement modifiée) de cet article.

https://kusanohitoshi.blogspot.jp/2017/01/python3cstringiostringio.html → Reportez-vous ici pour savoir comment gérer les erreurs d'importation StringIO.

"Laisse Python faire les choses ennuyeuses" → Comment utiliser le module os

http://www.unixuser.org/%7Eeuske/python/pdfminer/index.html → page pdfminer

https://github.com/conda-forge/pdfminer-feedstock https://conda-forge.org/feedstocks → Reportez-vous ici pour la procédure d'installation de pdfminer dans l'environnement anaconda.

Recommended Posts

Convertissez un grand nombre de fichiers PDF en fichiers texte à l'aide de pdfminer
Téléchargez un grand nombre d'images sur Wordpress
Organisez un grand nombre de fichiers dans des dossiers
One-liner qui crée un grand nombre de fichiers de test à la fois sous Linux
Convertir un PDF A4 en A3 toutes les 2 pages
TensorFlow Pour apprendre d'un grand nombre d'images ... ~ (presque) solution ~
Connectez un grand nombre de vidéos ensemble!
Convertir un PDF joint en courrier électronique au format texte
Convertir des fichiers PDF en fichiers PNG avec GIMP
Utilisez shutil pour supprimer tous les dossiers avec un petit nombre de fichiers
Traitement ETL pour un grand nombre de fichiers GTFS Realtime (édition Python)
TensorFlow Pour apprendre d'un grand nombre d'images ... (Problème non résolu) → 12/18 Résolu
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Convertir le «nombre» de date Excel en date / heure Python
Convertir la voix en texte à l'aide du SDK Azure Speech
Convertissez plusieurs fichiers jpg en un seul fichier PDF
Conversion par lots de fichiers PSD du répertoire en PDF
Sélectionnez PDFMiner pour extraire les informations textuelles du PDF
Créez une application Web qui convertit le PDF en texte à l'aide de Flask et PyPDF2
Accélérez un grand nombre de requêtes simples dans MySQL
Les débutants essaient de convertir des fichiers Word en PDF à la fois
Convertir un objet de tranche en liste de numéros d'index
Convertir un fichier texte avec des valeurs hexadécimales en fichier binaire
Consolider un grand nombre de fichiers CSV dans des dossiers avec python (données sans en-tête)
Trier les gros fichiers texte
Un outil pour suivre les affiches avec un grand nombre de likes sur instagram [25 minutes à 1 seconde]
Lire un grand nombre de rapports sur les titres en utilisant COTOHA
Utilisez l'API pour modifier collectivement un grand nombre d'e-mails non lus dans Gmail à lire
[Python] Générer de manière aléatoire un grand nombre de noms de personne en anglais
[Commande] Commande pour obtenir une liste de fichiers contenant des caractères pleine largeur
Conversion par lots de fichiers image téléchargés vers MS Forms / Google Forms vers PDF
Scrapy-Redis est recommandé pour l'exploration d'un grand nombre de domaines
J'ai créé un éditeur de texte simple en utilisant PyQt
Script pour convertir entre les fichiers de langue Xcode et le texte délimité par des tabulations
Convertir le HTML en fichier texte
Un mémorandum d'utilisation de eigen3
Comment afficher une colonne de fichiers spécifiée sous Linux (awk)
Extension Sphinx pour convertir arbitrairement du texte en pré-traitement de la génération de documents
L'exécution d'un grand nombre de Python3 Executor.submit peut consommer beaucoup de mémoire.
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
Python: Introduction à Flask: création d'une application d'identification de numéro à l'aide de MNIST
Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
Convertir le PDF de la liste des concessionnaires de la campagne Go To Eat Hokkaido en CSV
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
Comment enregistrer une partie d'une longue vidéo en utilisant OpenCV
Exporter les résultats de la recherche de publication dans un fichier à l'aide de l'API Mattermost
Comment créer une grande quantité de données de test dans MySQL? ??
Créez un outil de ligne de commande pour convertir des dollars en yens en utilisant Python
[Version compatible TensorFlow 2.x] Comment entraîner une grande quantité de données à l'aide de TFRecord et DataSet dans TensorFlow (Keras)
Je souhaite résoudre le problème de fuite de mémoire lors de la sortie d'un grand nombre d'images avec Matplotlib
Fonction pour convertir des colonnes Excel en nombres
Convertir Markdown en PDF en Python
Conversion de pdf en txt 1 [pdfminer]
Mémorandum de dossiers sous conf.d