[PYTHON] Extrahieren Sie japanischen Text aus PDF mit PDFMiner

Was ich machen will; was ich vorhabe zu tun

Gibt es ein Problem mit dem Inhalt einer großen Anzahl von PDFs (10.000 oder mehr!)? Ich wollte eine schnelle Suche durchführen (ob der Dateiname mit dem Inhalt übereinstimmt usw.).

Umgebung

Python 2.7 Windows7 64bit

Bibliothek zu verwenden

Verwenden Sie PDFMiner. Obwohl die offizielle Website ein Beispiel für die Verwendung der Eingabeaufforderung enthält, Aus irgendeinem Grund gab es keine Informationen zum Importieren und Verwenden der Bibliothek, daher bin ich etwas verwirrt.

Installation

Extrahieren Sie die vom Beamten heruntergeladene Datei Im Ordner pdfminer-20140328 ist diesmal Windows. Führen Sie daher den folgenden Befehl aus.

mkdir pdfminer\cmap
python tools\conv_cmap.py -c B5=cp950 -c UniCNS-UTF8=utf-8 pdfminer\cmap Adobe-CNS1 cmaprsrc\cid2code_Adobe_CNS1.txt
python tools\conv_cmap.py -c GBK-EUC=cp936 -c UniGB-UTF8=utf-8 pdfminer\cmap Adobe-GB1 cmaprsrc\cid2code_Adobe_GB1.txt
python tools\conv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminer\cmap Adobe-Japan1 cmaprsrc\cid2code_Adobe_Japan1.txt
python tools\conv_cmap.py -c KSC-EUC=euc-kr -c KSC-Johab=johab -c KSCms-UHC=cp949 -c UniKS-UTF8=utf-8 pdfminer\cmap Adobe-Korea1 cmaprsrc\cid2code_Adobe_Korea1.txt
python setup.py install

Wenn Sie mit diesem Verfahren nicht installieren, werden alle Japaner wie folgt angezeigt (cid: 0000).

Extrahieren Sie tatsächlich den Text

pdf2txt.py


# -*- coding: utf-8 -*-

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

space = re.compile(ur"[  ]+")

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 = file(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    for page in PDFPage.get_pages(fp):
        interpreter.process_page(page)
    fp.close()
    device.close()
    if buf:
        text = re.sub(space, "", outfp.getvalue())
        print text
    outfp.close()


convert_pdf_to_txt("TEST.pdf", "test.txt")

** Vorbereitetes PDF ** TEST.gif

Ergebnis

alter Teich
Spring in den Frosch
Das Geräusch von Wasser

Cocoa*Chocolate

Kakao ist ein Feststoffgehalt, der durch Abtrennen eines bestimmten Prozentsatzes von Kakaobutter von der Kakaomasse erhalten wird.
Oder es ist eine Abkürzung für das pulverisierte Kakaopulver. Schmelzen Sie auch das Kakaopulver
Es wird auch als Abkürzung für herzhafte Getränke verwendet. Wie in der Geschichte unten gezeigt
Bis wir anfingen, Coco Avatar von Khao Mass, dem Wort Kakao, zu trennen
Es gibt nur pastöse Schokolade, die weder fest noch flüssig ist
War dort.

laparams.detect_vertical scheint ein wichtiger Parameter zu sein. Für vertikalen PDF-Text oder PDF mit einer komplizierten Struktur Wenn dies nicht auf True gesetzt ist, wird Japanisch für jedes Zeichen unterbrochen und die Struktur wird in einem Durcheinander ausgegeben. Außerdem entfernt "re" den störenden Raum. Überprüfen Sie dann für die Zeichenfolge im Speicher einfach den Inhalt mit dem Operator in! Übrigens, wenn Sie "buf = False" als Argument übergeben, wird es als Text ausgegeben.

Beiseite

Zeichen, die in verschiedenen Zeichen wie Tsuji und 逗 angezeigt werden, konnten nicht gut in Japanisch konvertiert werden. Es wird wie folgt angezeigt (cid: 7711). Ich kenne die CID-Schrift noch nicht, also studiere sie.

Übrigens, bei der GhostScript-Textextraktion wurde beim Versuch, Text von Schriftdaten zu extrahieren, die nicht in Windows enthalten sind, der Zeichencode von Shift_JIS mit & #; zwangsweise ausgegeben, sodass die Zeichen verstümmelt wurden (aus der Shift_JIS - Unnicode-Korrespondenztabelle). Zwangskonvertieren und reagieren). PyPDF2 konnte Japanisch nicht gut konvertieren. (Offizieller sagt auch, dass dies in Zukunft verfeinert wird.)

Die Seite, auf die ich mich bezog

http://stackoverflow.com/questions/26748788/extraction-of-text-from-pdf-with-pdfminer-gives-multiple-copies

Recommended Posts

Extrahieren Sie japanischen Text aus PDF mit PDFMiner
Wählen Sie PDFMiner, um Textinformationen aus PDF zu extrahieren
Extrahieren Sie Text aus [python] pdf und lesen Sie Zeichen mit Open-Jtalk vor
Gründliche Erfassung offener PDF-Daten. PDF-Textanalyse ab PDFMiner.
Konvertierung von pdf nach txt 1 [pdfminer]
Extrahieren Sie mit Python Text aus Bildern
Sprechen Sie japanischen Text mit OpenJTalk + Python
Konvertieren Sie mit pdfplumber von PDF in CSV
Dokumentklassifizierung mit toch Text von PyTorch
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
Mit OpenJtalk auf Japanisch sprechen (Textdatei lesen)
[Automatisierung] Extrahieren Sie die Tabelle als PDF mit Python
Japanisch mit Matplotlib
Zip mit Python extrahieren (unterstützt japanische Dateinamen)
Extrahieren Sie mit Python Daten von einer Webseite
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Python: Japanischer Text: Charakteristisch für Sprache aufgrund von Wortähnlichkeit
Schneiden Sie Komponenten und Rückrufe aus app.py mit plotly Dash aus
Extrahieren Sie Dateien mit dem Befehl scp aus dem EC2-Speicher
Python: Japanischer Text: Charakteristisch für Sprache aus Wortkontinuität
PDF mit Django ausgeben
Daten aus S3 extrahieren
Japanische Eingabe mit Pyautogui
Extrahierter Text aus dem Bild
PDF mit WeasyPrint ausgeben
Mit OpenJtalk auf Japanisch sprechen
Text Mining mit Python-Scraping-
Pythonbrew mit erhabenem Text
Tabelle aus Wikipedia extrahieren
Englisch PDF wird ins Japanische übersetzt
EXIF mit Schlucken extrahieren
Ablauf des Extrahierens von Text in PDF mit der Cloud Vision API
OpenJTalk unter Windows 10 (Sprechen Sie Japanisch mit Python aus der Umgebungskonstruktion)
Lerne japanische Textkategorien mit tf-idf und Random Forest ~ [Tuning]
Extrahieren Sie die Vorlage der aus Thunderbird gespeicherten EML-Datei mit python3.7
[Python] Extrahieren Sie Textdaten aus XML-Daten von 10 GB oder mehr.
Holen Sie sich japanische Aktieninformationen von Yahoo Finance mit Pandas