[PYTHON] Extrahieren Sie Informationen von Visitenkarten, indem Sie die Vision API und die Natural Language API kombinieren

Einführung

Extrahieren wir Informationen von einer Visitenkarte, indem wir die Cloud Vision-API und die Natural Language-API kombinieren. Ich werde es mit Python machen, um die API zu verwenden.

Klicken Sie hier für den vorherigen Artikel:

App von nun an zu machen

Geben Sie ein Visitenkartenbild und erstellen Sie eine App, die den Namen, den Firmennamen und die Adresse extrahiert. Das Bild sieht folgendermaßen aus: スクリーンショット 2016-11-10 9.52.44.png

Ablauf der Anwendungserstellung

Schritt 0: Bereiten Sie die Erstellung einer App vor ↓ Schritt 1: Erkennen Sie Text mithilfe der Vision-API ↓ Schritt 2: Extrahieren Sie Namen und Firmennamen mit der Natural Language API ↓ Schritt 3: Integrieren Sie die beiden APIs, um Informationen von der Visitenkarte zu extrahieren

Schritt 0 (3 Minuten) Bereiten Sie die Erstellung einer App vor

Um eine App zu erstellen, installieren Sie die erforderlichen Bibliotheken, laden Sie das Repository herunter und legen Sie den API-Schlüssel fest.

Installieren Sie die erforderlichen Bibliotheken

Installieren Sie die zum Erstellen der App erforderlichen Bibliotheken. Führen Sie zum Installieren den folgenden Befehl aus.

$ pip install requests
$ pip install pyyaml

Laden Sie das Repository herunter

Ich habe die Vorlage der Anwendung im Voraus erstellt. Wenn Sie die erforderlichen Teile ausfüllen, funktioniert dies. Laden Sie das entsprechende Repository herunter.

Sie können es von "Download ZIP" von "Clone or Download" herunterladen.

API-Schlüssel festlegen

Beschreiben Sie den von Google Cloud Platform erhaltenen API-Schlüssel in der Einstellungsdatei (plugins / config / google.yaml). Öffnen Sie google.yaml in Ihrem Editor und überschreiben Sie den Tokenwert mit dem Schlüsselwert Ihrer Google Cloud Platform-API. Bitte schreiben Sie den Teil von ** xxx ** neu.

google.yaml


token: xxx

Schritt 1 (5 Minuten) Erkennen von Text mithilfe der Vision-API

In diesem Abschnitt wird zunächst die Vision-API beschrieben. Schreiben Sie danach ein Skript, um die API zu verwenden. Führen Sie nach dem Schreiben das Skript aus, um den Vorgang zu überprüfen. Beginnen wir mit der Erklärung der API.

Was ist die Vision API?

Die Google Cloud Vision-API nutzt die Leistungsfähigkeit leistungsfähiger Modelle für maschinelles Lernen, um die Entwicklung von Anwendungen zu ermöglichen, die den Inhalt von Bildern erkennen und verstehen können. Die Cloud Vision-API bietet die folgenden Funktionen:

Es ist schwer, nur mit Worten zu verstehen, also lass es uns versuchen. Besuchen Sie die unten stehende Webseite, um die Demo auszuprobieren.

Obwohl es sich um ein Abrechnungssystem handelt, können Sie es bis zu 1000 Anfragen kostenlos verwenden. Danach werden Sie entsprechend der Anzahl der Anfragen belastet.

Skriptbeschreibung

Schreiben Sie ein Skript zur Verwendung der Vision-API. Der Speicherort des Skripts ist ** plugins / apis / vision.py **. Öffnen Sie vision.py im Editor und schreiben Sie den Inhalt wie folgt neu. Bitte speichern Sie nach dem Umschreiben. In diesem Fall verwenden Sie bitte UTF8 als Zeichencode.

vision.py


# -*- coding: utf-8 -*-
import base64
import requests


def detect_text(image_file, access_token=None):

    with open(image_file, 'rb') as image:
        base64_image = base64.b64encode(image.read()).decode()

    url = 'https://vision.googleapis.com/v1/images:annotate?key={}'.format(access_token)
    header = {'Content-Type': 'application/json'}
    body = {
        'requests': [{
            'image': {
                'content': base64_image,
            },
            'features': [{
                'type': 'TEXT_DETECTION',
                'maxResults': 1,
            }]

        }]
    }
    response = requests.post(url, headers=header, json=body).json()
    text = response['responses'][0]['textAnnotations'][0]['description'] if len(response['responses'][0]) > 0 else ''
    return text

Indem Sie ** detect_text ** den Pfad der Bilddatei und den API-Schlüssel geben, wird der Text in der Bilddatei erkannt, extrahiert und zurückgegeben. Lassen Sie es uns ausführen, um den Vorgang zu überprüfen.

Skript ausführen

Lassen Sie uns das Skript ausführen, das wir zuvor geschrieben haben. Gehen Sie zunächst zum Ordner ** Plugins / Tests **. Kannst du sehen, dass test_vision.py drin ist? In test_vision.py wird angegeben, dass ** detect_text ** des zuvor geschriebenen Skripts aufgerufen werden soll. Mit anderen Worten, wenn es richtig funktioniert, sollte es den Text im Bild zurückgeben, wenn Sie es geben.

Machen wir das. Geben Sie example.png in den Datenordner ein und führen Sie ihn aus. example.png

$ python test_vision.py data/example.png > result.txt

Haben Sie als Ergebnis der Ausführung die folgende Zeichenfolge erhalten?

Kintone Co., Ltd.
Erste Vertriebsabteilung des Hauptsitzes in Tokio
Cai Ai Zutaro
23-4567
1 Nihonbashi Tenjikucho, Tokio-2-3
Tel: 00-1234-5678
E-mail: [email protected]

Schritt 2 (5 Minuten) Extrahieren Sie Namen und Firmennamen mithilfe der Natural Language API

In diesem Abschnitt wird zunächst die API für natürliche Sprachen beschrieben. Schreiben Sie danach ein Skript, um die API zu verwenden. Führen Sie nach dem Schreiben das Skript aus, um den Vorgang zu überprüfen. Beginnen wir mit der Erklärung der API.

Was ist die Natural Language API?

Die Google Cloud Natural Language API ist eine benutzerfreundliche REST-API, die ein leistungsstarkes Modell für maschinelles Lernen anwendet, um die Struktur und Bedeutung von Text zu erkennen. Die Natural Language API verfügt über die folgenden Funktionen:

Es ist schwer, nur mit Worten zu verstehen, also lass es uns versuchen. Besuchen Sie die unten stehende Webseite, um die Demo auszuprobieren.

Obwohl es sich um ein Abrechnungssystem handelt, können Sie es bis zu 5000 Anfragen kostenlos verwenden. Danach werden Sie entsprechend der Anzahl der Anfragen belastet.

Skriptbeschreibung

Schreiben Sie ein Skript zur Verwendung der Natural Language API. Der Speicherort des Skripts ist ** plugins / apis / language.py **. Öffnen Sie language.py im Editor und schreiben Sie den Inhalt wie folgt neu. Bitte speichern Sie nach dem Umschreiben. In diesem Fall verwenden Sie bitte UTF8 als Zeichencode.

language.py


# -*- coding: utf-8 -*-
import requests


def extract_entities(text, access_token=None):

    url = 'https://language.googleapis.com/v1beta1/documents:analyzeEntities?key={}'.format(access_token)
    header = {'Content-Type': 'application/json'}
    body = {
        "document": {
            "type": "PLAIN_TEXT",
            "language": "JA",
            "content": text
        },
        "encodingType": "UTF8"
    }
    response = requests.post(url, headers=header, json=body).json()
    return response


def extract_required_entities(text, access_token=None):
    entities = extract_entities(text, access_token)
    required_entities = {'ORGANIZATION': '', 'PERSON': '', 'LOCATION': ''}
    for entity in entities['entities']:
        t = entity['type']
        if t in required_entities:
            required_entities[t] += entity['name']

    return required_entities

Indem Sie ** extract_entities ** Text und einen API-Schlüssel angeben, können Sie verschiedene eindeutige Ausdrücke extrahieren. Diesmal werden jedoch nur ** Firmenname **, ** Personenname ** und ** Standort ** aus dem Text extrahiert. ** extract_required_entities ** wird verwendet, um diese Informationen zu extrahieren.

Lassen Sie es uns ausführen, um den Vorgang zu überprüfen.

Skript ausführen

Lassen Sie uns das Skript ausführen, das wir zuvor geschrieben haben. Gehen Sie zunächst zum Ordner ** Plugins / Tests **. Kannst du sehen, dass test_language.py drin ist? test_language.py gibt an, dass ** extract_required_entities ** des Skripts aufgerufen werden soll, das ich zuvor geschrieben habe. Mit anderen Worten, wenn es richtig funktioniert, wenn Sie einen Text angeben, sollte es den Firmennamen, den Personennamen und den Ort im Text zurückgeben.

Machen wir das. Geben Sie example.txt in den Datenordner ein und führen Sie ihn aus. Das zuvor erwähnte Zeichenerkennungsergebnis ist in example.txt enthalten.

$ python test_language.py data/example.txt > result.txt

Haben Sie als Ergebnis der Ausführung die folgende Zeichenfolge erhalten?

{'PERSON': 'Cai Ai Zutaro', 'LOCATION': '1 Nihonbashi Tenjikucho, Tokio-2-3', 'ORGANIZATION': 'Kintone Co., Ltd.'}

Schritt 3 (3 Minuten) Integrieren Sie zwei APIs, um Informationen von Visitenkarten zu extrahieren

Schließlich werde ich ein Skript schreiben, um die Vision API und die Natural Language API zu kombinieren, die ich bisher geschrieben habe. Führen Sie nach dem Schreiben das Skript aus, um den Vorgang zu überprüfen. Beginnen wir mit dem Schreiben des Skripts.

Skriptbeschreibung

Schreiben Sie ein Skript, um die Vision-API und die Natural Language-API zu kombinieren. Der Speicherort des Skripts ist ** plugins / apis / integration.py **. Öffnen Sie die Integration.py in einem Editor und schreiben Sie den Inhalt wie folgt neu. Bitte speichern Sie nach dem Umschreiben. In diesem Fall verwenden Sie bitte UTF8 als Zeichencode.

integration.py


# -*- coding: utf-8 -*-
from .language import extract_required_entities
from .vision import detect_text


def extract_entities_from_img(img_path, access_token):

    text = detect_text(img_path, access_token)
    entities = extract_required_entities(text, access_token)

    return entities

Indem Sie den Pfad und den API-Schlüssel der Bilddatei an ** extract_entities_from_img ** weitergeben, werden der Firmenname und der Personenname in der Bilddatei erkannt und zurückgegeben. Lassen Sie es uns ausführen, um den Vorgang zu überprüfen.

Skript ausführen

Lassen Sie uns nun das Skript ausführen. Gehen Sie zunächst zum Ordner ** Plugins / Tests **. Kannst du sehen, dass test_integration.py drin ist? test_integration.py gibt an, dass ** extract_entities_from_img ** des Skripts aufgerufen werden soll, das ich zuvor geschrieben habe. Mit anderen Worten, wenn es richtig funktioniert, wenn Sie ein Bild geben, sollte es den Firmennamen usw. im Bild zurückgeben.

Machen wir das. Geben Sie example.png in den Datenordner ein und führen Sie ihn aus. example.png

$ python test_integration.py data/example.png > result.txt

Haben Sie als Ergebnis der Ausführung die folgende Zeichenfolge erhalten?

{'PERSON': 'Cai Ai Zutaro', 'LOCATION': '1 Nihonbashi Tenjikucho, Tokio-2-3', 'ORGANIZATION': 'Kintone Co., Ltd.'}

abschließend

Wie war das. Ich habe versucht, mich mit der Entwicklung mithilfe der Vision-API und der API für natürliche Sprache zu befassen, aber ich denke, Sie können verschiedene Möglichkeiten spüren, wenn Sie beide verbinden.

Kombinieren Sie anschließend die bisher erstellten Apps mit Slack, damit Sie Visitenkartenbilder auf Slack hochladen und in Kintone registrieren können. Bitte fahren Sie mit dem nächsten Artikel fort.

Artikelübersicht

Der Inhalt dieser praktischen Übung ist in drei Artikeln zusammengefasst.

Bitte bereiten Sie sich im Voraus auf den folgenden Artikel vor.

Recommended Posts

Extrahieren Sie Informationen von Visitenkarten, indem Sie die Vision API und die Natural Language API kombinieren
[Verarbeitung natürlicher Sprache] Extrahieren Sie Schlüsselwörter aus der Kakenhi-Datenbank mit MeCab-ipadic-neologd und termextract