[Python] Convertir le texte PDF en CSV pour chaque page (2/24 postscript)

Référence: Extraire le texte japonais du PDF avec PDFMiner

C'est presque la méthode. Je n'ai rien fait d'intéressant.

Quoi utiliser

Une bibliothèque appelée PDFMiner. C'est un coup avec pip.

pip install pdfminer.six

Sur le site de référence, il y avait du japonais, mais même si je l'ai mis avec pip, le japonais a été détecté correctement.

Tsukuru CSV

-Les données de date de création du CSV sont incluses dans la colonne "Date de mise à jour". -Les données de texte PDF sont incluses dans la colonne "Phrase" -Le numéro de page du PDF est inscrit dans la colonne "Numéro de page".

Ce qui a été fait

C'est la source du site de référence à 90%.

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

import csv,re,datetime
import pandas as pd

class converter(object):
  def pdf_to_csv(self,p_d_f):
    df = pd.DataFrame(columns=["Mettre à jour la date et l'heure","Phrase","numéro de page"])
  
    #Extraction de texte PDF à partir d'ici
    cnt = 1
    space = re.compile("[  ]+")
    fp = open(p_d_f, 'rb')
        
    for page in PDFPage.get_pages(fp):
      #Initialisation séquentielle
      rsrcmgr = PDFResourceManager()
      outfp = StringIO()
      codec = 'utf-8'
      laparams = LAParams()
      laparams.detect_vertical = True
      device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams)
      interpreter = PDFPageInterpreter(rsrcmgr, device)
            
      interpreter.process_page(page)
      text = re.sub(space, "", outfp.getvalue())

      df.loc[cnt,["Phrase","numéro de page"]] = [text,cnt]
      cnt += 1
            
    outfp.close()
    fp.close()
    device.close()
         
    now = datetime.datetime.now()
    df["Mettre à jour la date et l'heure"] = now

    csv_path = p_d_f.replace('.pdf', '.csv')
    df.to_csv(csv_path, encoding='CP932', index=False)

if __name__ == "__main__":
       
  p_d_f = "En quelque sorte.pdf"
  con=converter()
  hoge=con.pdf_to_csv(p_d_f)

La différence avec le site de référence est que la boîte (outp) qui stocke les données texte extraites du PDF est initialisée au point où elle est placée dans le bloc de données. S'il est laissé tel quel, les données texte de toutes les pages seront ajoutées de plus en plus. Si vous le mettez dans un bloc de données, c'est celui-ci, alors je me demande si vous pouvez rapidement ajouter de petites colonnes.

C'est peut-être parce qu'il est facile que la conversion csv n'ait pas été prise d'un seul coup même si je cherchais, mais pour écrire des notes.

2/24 postscript

Suite pour une raison quelconque

Recommended Posts

[Python] Convertir le texte PDF en CSV pour chaque page (2/24 postscript)
[Python] Suite - Convertir le texte PDF en CSV page par page
Convertir Markdown en PDF en Python
[Python] Convertit les délimiteurs de fichier csv en délimiteurs de tabulation
Convertir de PDF en CSV avec pdfplumber
Convertir un PDF joint en courrier électronique au format texte
[Good By Excel] script python pour générer sql pour convertir csv en table
Je souhaite convertir une table convertie en PDF en Python en CSV
Convertir un PDF en image (JPEG / PNG) avec Python
[Python] Conversion de DICOM en PNG ou CSV
Convertissez l'image au format .zip en PDF avec Python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Comment ajouter des numéros de page à un fichier PDF (en Python)
Comment enregistrer une table récupérée par python en csv
[python] Convertir la date en chaîne
Convertir numpy int64 en python int
[Python] Convertir la liste en Pandas [Pandas]
Convertir le HTML en fichier texte
Convertir le projet Scratch en Python
[Python] Convertir Shift_JIS en UTF-8
Parler avec Python [synthèse vocale]
Écrire en csv avec Python
Convertissez rapidement SDF en CSV
Convertir le code python 3.x en python 2.x
Convertir un fichier Excel en texte en Python à des fins de comparaison
Rejoignez CSV normalisé par les pandas Python pour faciliter la vérification
[Python] Ecrire dans un fichier csv avec Python
Convertir un PDF A4 en A3 toutes les 2 pages
Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique
Convertir la liste en DataFrame avec python
Après avoir appelé le fichier Shell sur Python, convertissez CSV en Parquet.
Convertir le PDF de la liste des concessionnaires de la campagne Go To Eat Hokkaido en CSV
Python> liste> Convertir une double liste en une seule liste
Conversion de pdf en txt 2 [pyocr]
Convertissez un grand nombre de fichiers PDF en fichiers texte à l'aide de pdfminer
[Python] Convertit les nombres naturels en nombres ordinaux
Convertir décimal en n-aire [python]
Convertir un PDF en image avec ImageMagick
Python> tuple> Convertir un double tuple en un seul tuple
Convertir un document XML stocké dans une base de données XML (BaseX) au format CSV (en utilisant Python)
Convertir le PDF de la liste des magasins membres Go To EAT dans la préfecture de Kumamoto en CSV
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Convertir le PDF des magasins membres Go To EAT de la préfecture d'Ishikawa en CSV
Convertir le PDF d'un nouveau cas d'épidémie corona dans la préfecture d'Aichi en CSV
Prétraitement avec Python. Convertir les résultats de recherche de balises de la vidéo Nico Nico au format CSV
Reconnaissance vocale en anglais avec python [speech to text]
Convertir un mémo à la fois avec Python 2to3
Réintroduction aux décorateurs Python ~ Apprenons les décorateurs par type ~
Convertir Python> séquence de deux valeurs en dictionnaire
Réponse à la sélection des débutants d'AtCoder par Python3
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment convertir csv en tsv dans la CLI
Comment convertir Python en fichier exe
Convertir Hiragana en Romaji avec Python (bêta)
Conversion de katakana en voyelle kana [python]
Fonction pour enregistrer les images par date [python3]
Convertissez des données FX 1 minute en données 5 minutes avec Python
python> Convertir le tuple en liste> aList = list (pi_tuple)
Lire Python csv et exporter vers txt