[PYTHON] Ablauf des Extrahierens von Text in PDF mit der Cloud Vision API

Einführung

Macht ihr OCR (Optical Character Recognition)? Mit der Technologie zum Lesen der Textinformationen auf dem Bild werden sie an verschiedenen Stellen sichtbar. Darüber hinaus wird es immer einfacher, die OCR-Technologie in GCP zu verwenden, damit normale Menschen sie verwenden können.

Ich habe versucht, die Textinformationen in der PDF-Datei mithilfe der Cloud Vision-API von GCP zu lesen, aber ich hatte das Gefühl, dass das offizielle Dokument etwas schwer zu verstehen ist (?). Daher möchte ich es hier anstelle eines Memos zusammenfassen.

Text in Datei erkennen (PDF / TIFF)

Ich hatte das Gefühl, dass verschiedene wichtige Punkte im obigen Dokument weggelassen wurden, daher war es für mich als Anfänger etwas schwierig.

Umgebung

Mac OS Mojave
Python 3.7

Kosten

Ich kenne die Rechnung für April noch nicht, aber ich denke, sie ist wahrscheinlich niedrig. Ich benutze auch die kostenlosen Credits, die ich zum ersten Mal bekomme, also werde ich sie aktualisieren, sobald ich sie verstehe.

Aktivieren Sie die Cloud Vision-API

Aktivieren Sie die Cloud Vision-API.

Screen Shot 2020-04-25 at 18.14.17.png

Wählen Sie eine Bibliothek aus APIs und Diensten aus, suchen Sie nach der Cloud Vision-API und aktivieren Sie sie.

Screen Shot 2020-04-25 at 18.13.40.png

Erstellen Sie eine JSON-Schlüsseldatei

Screen Shot 2020-04-25 at 19.18.08.png

Wählen Sie unter IAM und Administration ein Dienstkonto aus und erstellen Sie ein neues Dienstkonto.

Sie können eine Schlüssel-JSON-Datei über das folgende "Dienstkonto erstellen" erstellen.

Screen Shot 2020-04-25 at 19.18.18.png

Jetzt können Sie eine Schlüsseldatei erstellen, die den öffentlichen Schlüssel usw. enthält. Sie werden diese Schlüsseldatei später in Ihre Arbeitsdatei verschieben.

Vorbereitung des Cloud-Speichers

Screen Shot 2020-04-25 at 18.14.33.png

Wählen Sie einen Browser aus dem Speicher. Dadurch gelangen Sie zum Speicherbrowser. Klicken Sie auf Bucket erstellen.

Screen Shot 2020-04-25 at 18.17.32.png

Erstellen Sie einen neuen Bucket und laden Sie die PDF-Datei hoch, die Sie OCR möchten. Mein Bucket-Name ist diesmal "Umgebungs-Engineering-PDF-Bucket-1" und ich habe "Scan-001.pdf" hochgeladen.

Screen Shot 2020-04-25 at 19.24.23.png

Wir werden auch einen weiteren Bucket erstellen, um die gelesenen Textinformationen der PDF-Datei zu speichern. Ich nannte es "ocr-result-Bucket-Qiita".

Importieren Sie die erforderlichen Module

Die folgenden drei sind erforderlich, also importieren wir sie. Sie können auch virtualenv verwenden.

pip install google-cloud-vision
pip install google-cloud-storage
pip install protobuf

https://pypi.org/project/google-cloud-storage/ https://pypi.org/project/google-cloud-vision/ https://pypi.org/project/protobuf/

Start der eigentlichen Python-Verarbeitung

import os
import json
import re
from google.cloud import vision
from google.cloud import storage
from google.protobuf import json_format

#Bitte wechseln Sie hier zu Ihrem eigenen Uri sowie zu Ihrem eigenen
gcs_source_uri = "gs://environment-engineering-pdf-bucket-1/scan-001.pdf"
gcs_destination_uri = "gs://ocr-result-bucket-qiita"

#Bitte ändern Sie den Namen des Buckets hier in Ihren eigenen
bucket_name = "ocr-result-bucket-qiita"

#Bitte ändern Sie die Schlüsseldatei hier in Ihre eigene
#Vergessen Sie nicht, die JSON-Schlüsseldatei im selben Verzeichnis abzulegen!
credential_path = 'engaged-symbol-274611-192d61800d05.json'

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path

mime_type = 'application/pdf'
batch_size = 2
client = vision.ImageAnnotatorClient()

feature = vision.types.Feature(
    type=vision.enums.Feature.Type.DOCUMENT_TEXT_DETECTION)

gcs_source = vision.types.GcsSource(uri=gcs_source_uri)

input_config = vision.types.InputConfig(
    gcs_source=gcs_source, mime_type=mime_type)

gcs_destination = vision.types.GcsDestination(uri=f"{gcs_destination_uri}/")
output_config = vision.types.OutputConfig(
    gcs_destination=gcs_destination, batch_size=batch_size)

async_request = vision.types.AsyncAnnotateFileRequest(
    features=[feature], input_config=input_config,
    output_config=output_config)

operation = client.async_batch_annotate_files(
    requests=[async_request])

print('Waiting for the operation to finish.')
operation.result(timeout=180)


storage_client = storage.Client()

bucket = storage_client.get_bucket(bucket_name)

output = blob_list[0]

json_string = output.download_as_string()
response = json_format.Parse(
    json_string, vision.types.AnnotateFileResponse())

# The actual response for the first page of the input file.
first_page_response = response.responses[0]
annotation = first_page_response.full_text_annotation

print(u'Full text:\n{}'.format(
    annotation.text))

Endlich ein Beispiel

Erfolgreiches Beispiel

Ich habe versucht, OCR des folgenden Bildes pdf.

Screen Shot 2020-04-25 at 19.43.40.png

Dann wurde der Titel im Terminal wie folgt angezeigt.

Gentosha Bunko
Chinesen in Kyoto
Naomi Kang

Beispiel für einen Fehler

Auf Seiten mit den folgenden geschriebenen Zeichen schlägt dies jedoch fehl. "Gourmet" wird als "Kamako" erkannt und "Niniku no" fehlt in "Niniku na" und "".

Screen Shot 2020-04-25 at 19.45.09.png

Ausgabe:

Inhaltsverzeichnis
《Kamako》
"tanzen"
Kashinnosu
Es ist Knoblauch
Tasche Kind 4
Kapitel Fisch(Log Town Seven Pine)|
34
Dreiseitiger Fischflügel
Buan(Shimogamo)
Aus Sesamhaut
Mizusako
Zahlen(Kodoji-Tempel)
04
Wie ein Eltern-Kind-Ventil
Phönix
Fuyoen(Kawaramachi Kajo)
Person

Schließlich

Wenn Sie dies in das Epub-Format usw. ausgeben können, können Sie es auch in das Mobi-Format konvertieren und mit kindle lesen! Ich weiß nicht, wie viel es kosten wird. .. ..

Recommended Posts

Ablauf des Extrahierens von Text in PDF mit der Cloud Vision API
Textextraktion mit GCP Cloud Vision API (Python3.6)
Transkription von Bildern mit der Vision API von GCP
Probleme mit den Ausgabeergebnissen mit der Cloud Vision-API von Google
Textextraktion (Lese-API) mit Azure Computer Vision-API (Python3.6)
Eine Geschichte über das Lesen eines Bilderbuchs durch Synthetisieren von Sprache mit COTOHA API und Cloud Vision API
Spracherkennung von WAV-Dateien mit der Google Cloud Speech API Beta
"AttributeError: Modul 'google.cloud.vision' hat keine Attributtypen '" in der Cloud Vision API (GCP Vision AI)
Die Geschichte der Ausgabe des Planetarium-Meisters im PDF-Format mit Pycairo
Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud. [Python]
Cloud DevOps-Kochbuch Teil 4 - Entdecken Sie DevOps DirectMail in Python mit der REST-API
GOTO in Python mit erhabenem Text 3
GraphQL-API mit graphene_django in Django
Maschinelles Lernen x Web App-Diagnose: Erkennen Sie CAPTCHA mit der Cloud Vision-API
Erkennen Sie japanische Zeichen anhand von Bildern mithilfe der Cloud Vision-API von Google mit Python
Google Cloud Vision API-Beispiel für Python
Streaming-Spracherkennung mit der Google Cloud Speech API
Extrahieren Sie japanischen Text aus PDF mit PDFMiner
Verwenden Sie die Google Cloud Vision-API von Python
PDF mit Latex-Erweiterung mit Sphinx ausgeben
Text Mining mit Python ② Visualisierung mit Word Cloud
Verwendung der Cloud Vision API von GCP
Textfilterung mit naiven Buchten von sklearn
Erstellen Sie eine API für das Switchbot-Thermo-Hygrometer mit Node-RED
Lesen von Zeichen in Bildern mit Python OCR
Transkribieren Sie WAV-Dateien mit der Cloud Speech API
Führen Sie die API des Cloud Pak für Datenanalyseprojekts Job mit Umgebungsvariablen aus