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:
Geben Sie ein Visitenkartenbild und erstellen Sie eine App, die den Namen, den Firmennamen und die Adresse extrahiert. Das Bild sieht folgendermaßen aus:
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
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 zum Erstellen der App erforderlichen Bibliotheken. Führen Sie zum Installieren den folgenden Befehl aus.
$ pip install requests
$ pip install pyyaml
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.
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
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.
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.
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.
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.
$ 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]
义
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.
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.
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.
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.'}
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.
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.
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.
$ 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.'}
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.
Der Inhalt dieser praktischen Übung ist in drei Artikeln zusammengefasst.
Bitte bereiten Sie sich im Voraus auf den folgenden Artikel vor.