[PYTHON] Konvertierung von pdf nach txt 2 [pyocr]

Einführung

Letztes Mal habe ich pdfminer verwendet, um von pdf nach txt zu konvertieren. Es funktionierte jedoch aufgrund des Problems des Ziel-PDF nicht. Dieses Mal werden wir daran arbeiten, das Problem mit Pyocr zu lösen.

Vorheriger Artikel https://qiita.com/ptxyasu/items/4180035bd0ccd789c858

Zweck

Text aus pdf extrahieren.

Was wurde verwendet

Dieses Mal dachte ich darüber nach, Text mit Pyocr zu extrahieren. Pyocr konvertierte jedoch auch mit pdf2image von PDF zu Bild, um Text aus dem Bild zu extrahieren.

[pyocr] https://gitlab.gnome.org/World/OpenPaperwork/pyocr [pdf2image]https://github.com/Belval/pdf2image

Die Einführung von Tesseract und Pyocr erfolgte unter Bezugnahme auf die folgenden Artikel. https://qiita.com/nabechi6011/items/3a367ca94dbd208efcc7 https://github.com/tesseract-ocr/tesseract/wiki

Prozessablauf

  1. Bitte geben Sie den PDF-Namen gefolgt vom Namen der Ziel-PDF-Datei ein
  2. Konvertieren Sie die PDF-Datei in ein Bild
  3. Erstellen Sie ein Ergebnisverzeichnis, um die Ergebnisse auszugeben
  4. Textextraktion aus dem Bild mit Pyocr
  5. Geben Sie das Ergebnis im Ergebnis in die txt-Datei aus

Ist. Das Programm wird am Ende des Artikels gezeigt.

Ergebnis

Eingabe: object1.pdf 1.PNG

Ausgabe

object1.txt


8 CLASSES AND OBJECT-ORIENTED PROGRAMMING

We now turn our attention to our last major topic related to writing programs in
Python: using classes to organize programs around modules and data
abstractions.

Classes can be used in many different ways. In this book we emphasize using
them in the context of object-oriented programming. The key to object-
oriented programming is thinking about objects as collections of both data and
the methods that operate on that data.

The ideas underlying object-oriented programming are about forty years old, and
have been widely accepted and practiced over the last twenty years or so, In the
mid-1970s people began to write articles explaining the benefits of this approach
to programming. About the same time, the programming languages SmallTalk
(at Xerox PARC) and CLU (at MIT) provided linguistic support for the ideas. But
it wasn’t until the arrival of C++ and Java that it really took off in practice.

We have been implicitly relying on object-oriented programming throughout
most of this book. Back in Section 2.1.1 we said “Objects are the core things
that Python programs manipulate. Every object has a type that defines the
kinds of things that programs can do with objects of that type.” Since Chapter
5, we have relied heavily upon built-in types such as list and dict and the
methods associated with those types. But just as the designers of a
programming language can build in only a small fraction of the useful functions,
they can only build in only a small fraction of the useful types. We have already
looked at a mechanism that allows programmers to define new functions; we
now look at a mechanism that allows programmers to define new types.

 

8.1

Abstract Data Types and Classes

The notion of an abstract data type is quite simple. An abstract data type is a
set of objects and the operations on those objects. These are bound together so
that one can pass an object from one part of a program to another, and in doing
so provide access not only to the data attributes of the object but also to
operations that make it easy to manipulate that data.

The specifications of those operations define an interface between the abstract
data type and the rest of the program. The interface defines the behavior of the
operations—what they do, but not how they do it. The interface thus provides
an abstraction barrier that isolates the rest of the program from the data
structures, algorithms, and code involved in providing a realization of the type
abstraction.

Programming is about managing complexity in a way that facilitates change.
There are two powerful mechanisms available for accomplishing this:
decomposition and abstraction. Decomposition creates structure in a program,
and abstraction suppresses detail. The key is to suppress the appropriate

In der 10. Zeile wurden Jahre oder so, In der,. Aber anders als das war es richtig. Nun, es ist perfekt.

Was ich mit dem vorherigen pdfminer nicht machen konnte, kann mit pyocr (tesseract) gemacht werden!

Da es diesmal mit dem Eingabebild erstellt wurde, denke ich, dass Text aus dem PDF extrahiert werden kann, das durch Scannen der Drucksachen erstellt wurde. Auch dieses Mal habe ich vor, diesen extrahierten Text in die Google-Übersetzung einzufügen. Das nächste Mal möchte ich Googletrans verwenden, um es programmgesteuert auf Japanisch umzustellen.

Programm

Das Programm wurde auf github https://github.com/ptxyasu/pdf2text veröffentlicht

Der folgende pdf2text_pyocr.py wird ausgeführt. Ändern Sie die eingegebene PDF-Datei mit convert_from_path in image. Übergeben Sie dann die Bilder nacheinander an pyocr_read.

pdf2text_pyocr.py


  
from pdf2image import convert_from_path
from pyocr_read import pyocr_read

path = input("Please input pdf name\n")
images = convert_from_path(path)

i = 0
path,e = path.split(".")
pdf2read = pyocr_read(path)

for image in images:
    pdf2read.oneshot_read(image)
    i += 1

Die folgende Datei pyocr_read.py wird aus dem obigen pdf2text_pyocr aufgerufen. Init () bestimmt das Pyocr-Tool und erstellt ein Verzeichnis zum Speichern der Ergebnisse. Es bestimmt auch die zu erkennende Sprache. Die unter "Verfügbare Sprachen" angezeigten Sprachen können ausgewählt werden. Zum Beispiel ist Englisch eng und Japanisch jpn Extrahieren Sie dann den Text aus dem von pdf2text_pyocr empfangenen Bild mit pyocr und schreiben Sie die Ausgabe in eine Datei.

pyocr_read.py


import pyocr
import pyocr.builders
import os

class pyocr_read(object):
    def __init__(self,path):
        self.path = path
        tools = pyocr.get_available_tools()
        if len(tools) == 0:
            print("No OCR tool found")
            sys.exit(1)
        self.tool = tools[0]

        langs = self.tool.get_available_languages()
        print("Available languages: %s" % ", ".join(langs))
        self.lang = input("Please input language you want to recognize : ")

        if os.path.exists("./result") != True:
            os.mkdir("./result")
        return

    def oneshot_read(self,img):
        txt = self.tool.image_to_string(img, lang=self.lang, builder=pyocr.builders.TextBuilder())
        print(txt)
        file = open("./result/"+ self.path + ".txt",mode = "a",encoding = "utf-8")
        file.write(txt+"\n")

Recommended Posts

Konvertierung von pdf nach txt 2 [pyocr]
Konvertierung von pdf nach txt 1 [pdfminer]
Konvertieren Sie mit pdfplumber von PDF in CSV
Konvertieren Sie Markdown in Python in PDF
Konvertieren Sie A4 PDF alle 2 Seiten in A3
So konvertieren Sie von .mgz nach .nii.gz
Konvertieren Sie PDF in Image mit ImageMagick
Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)
So konvertieren Sie das Format einfach aus Markdown
Konvertieren Sie von Katakana zu Vokal Kana [Python]
Konvertieren Sie an E-Mails angehängte PDF-Dateien in das Textformat
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
In Python von Markdown in HTML konvertieren
Zum HSV konvertieren
[Python] Konvertieren von DICOM in PNG oder CSV
Konvertieren Sie mehrere JPG-Dateien in eine PDF-Datei
Stapelkonvertierung von PSD-Dateien im Verzeichnis in PDF
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
[Kleine Geschichte] Einfache Möglichkeit, Jupyter in PDF zu konvertieren
Wählen Sie PDFMiner, um Textinformationen aus PDF zu extrahieren
Mit matplotlib erstellte Bilder werden von dvi nach pdf verschoben
Anfänger versuchen, Word-Dateien sofort in PDF zu konvertieren
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Änderungen von Python 3.0 zu Python 3.5
Konvertiere Kanji in Kana
Übergang von WSL1 zu WSL2
Jupyter in py umwandeln
[Python] Konvertiert PDF-Text für jede Seite in CSV (2/24 Postscript)
Konvertiere keras-yolo3 in onnx
Dikt in Array konvertieren
Konvertieren Sie json in Excel
Von der Bearbeitung bis zur Ausführung
Konvertieren Sie Elemente des Numpy-Arrays von float in int
Konvertieren Wählen Sie die von Postgre erhaltene Abfrage mit Gehe zu JSON
Verwenden Sie pyOCR, um die Beschreibung auf der Karte in Text umzuwandeln
Konvertieren Sie den Farbraum von RGB nach CIELAB mit PIL (Pillow)
Linux-Skript zum Konvertieren von Markdown-Dateien vom JupyterLab-Format in das Qiita-Format
Stapelkonvertierung von in MS Forms / Google Forms hochgeladenen Bilddateien in PDF
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
[Caffe] Konvertiert die mittlere Datei vom binären Proto-Format in das npy-Format
Konvertieren Sie eine hexadezimale Zeichenfolge in eine Binärzeichenfolge
[Python] Datum in Zeichenfolge konvertieren
Post von Python nach Slack
Konvertieren Sie numpy int64 in python int
[Python] Liste in Pandas konvertieren [Pandas]
Flirte von PHP nach Python
Konvertieren Sie HTML in eine Textdatei
Portierung von Argparse zu Hydra
Übergang von Chainer v1 zu Chainer v2
OCR aus PDF in Python
Seitenzahl zu PDF hinzufügen
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Von Flask-RESTPlus nach Flask-RESTX migriert
Aktualisieren Sie python-social-auth von 0.1.x auf 0.2.x.
Konvertieren Sie das Scratch-Projekt in Python
[Python] Konvertieren Sie Shift_JIS in UTF-8
Migrieren Sie von require.txt zu pipenv