Ich musste 20 nicht kopierbare PDF-Dateien, die in Englisch geschrieben waren, wie folgt übersetzen Ich möchte den Text extrahieren und auf Google Übersetzung usw. anwenden.
Extrahieren Sie Text aus einer PDF-Datei.
Diesmal wurde pdfminer verwendet. https://github.com/pdfminer/pdfminer.six
Ich habe auch auf die folgenden Artikel verwiesen. https://qiita.com/mczkzk/items/894110558fb890c930b5
1.Bitte geben Sie den PDF-Pfad ein: Geben Sie anschließend den Namen der PDF-Datei ein 2. Ändern Sie die Erweiterung des Eingabedateinamens in .txt und erstellen Sie eine Textdatei 3. Geben Sie das Ergebnis aus
Es ist eine einfache Operation wie.
Das Ergebnis der vorherigen Angabe der PDF-Datei ist wie folgt.
Es wurde nur ein Pfeil ausgegeben. Seltsam, Geben Sie zum Überprüfen mit anderen PDF-Dateien das folgende mit Word erstellte PDF an.
Das Ergebnis ist wie folgt.
Der obige Pfeil wird ebenfalls ausgegeben, aber sowohl Englisch als auch Japanisch werden gut ausgegeben. Das Programm scheint keine Rolle zu spielen. Ich dachte, es sei ein Problem aufgrund des Schutzes von PDF, also habe ich versucht, den Schutz mit "Print to pdf" zu entfernen, aber Außerdem wurde nur ein Pfeil ausgegeben.
Da bestätigt wurde, dass pdfminer selbst gut funktioniert, liegt das Problem in der pdf-Datei. Ich denke, die Ursache ist, dass die Bildqualität schlecht ist, wahrscheinlich weil die Ziel-PDF-Datei gescannt wurde.
pdfminer ist so praktisch, dass es ein sehr kurzes Programm ist.
pdf2text.py
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
input_path = input("Please input pdf path : ")
output_path,ext = input_path.split(".")
output_path += ".txt"
manager = PDFResourceManager()
with open(output_path, "wb") as output:
with open(input_path, 'rb') as input:
with TextConverter(manager, output, codec='utf-8', laparams=LAParams()) as conv:
interpreter = PDFPageInterpreter(manager, conv)
for page in PDFPage.get_pages(input):
interpreter.process_page(page)
Recommended Posts