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.
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.
-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".
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.
Suite pour une raison quelconque
Recommended Posts