[PYTHON] Extraire des informations de cartes de visite en combinant l'API Vision et l'API Natural Language

introduction

Extrayons des informations d'une carte de visite en combinant l'API Cloud Vision et l'API Natural Language. Je vais le faire en utilisant Python pour utiliser l'API.

Cliquez ici pour l'article précédent:

Application à créer à partir de maintenant

Donnez une image de carte de visite et créez une application qui extrait le nom, le nom de l'entreprise et l'adresse. L'image ressemble à ceci: スクリーンショット 2016-11-10 9.52.44.png

Flux de création d'application

Étape 0: Préparez-vous à créer une application ↓ Étape 1: détecter le texte à l'aide de l'API Vision ↓ Étape 2: Extraire les noms et les noms d'entreprises à l'aide de l'API Natural Language ↓ Étape 3: Intégrez les deux API pour extraire les informations de la carte de visite

Étape 0 (3min) Préparez-vous à créer une application

Pour créer une application, installez les bibliothèques nécessaires, téléchargez le référentiel et définissez la clé API.

Installez les bibliothèques requises

Installez les bibliothèques nécessaires pour créer l'application. Exécutez la commande suivante pour installer.

$ pip install requests
$ pip install pyyaml

Téléchargez le référentiel

J'ai créé le modèle de l'application à l'avance. Si vous remplissez les parties nécessaires, cela fonctionnera, veuillez donc télécharger le référentiel pour cela à partir de ce qui suit.

Vous pouvez le télécharger à partir de «Télécharger ZIP» de «Cloner ou télécharger».

Définir la clé API

Décrivez la clé API obtenue par Google Cloud Platform dans le fichier de paramètres (plugins / config / google.yaml). Ouvrez google.yaml dans votre éditeur et remplacez la valeur du jeton par la valeur de la clé de votre API Google Cloud Platform. Veuillez réécrire la partie de ** xxx **.

google.yaml


token: xxx

Étape 1 (5 min) Détecter le texte à l'aide de l'API Vision

Cette section décrit d'abord l'API Vision. Après cela, écrivez un script pour utiliser l'API. Après l'écriture, exécutez le script pour vérifier l'opération. Commençons par l'explication de l'API.

Qu'est-ce que Vision API?

L'API Google Cloud Vision exploite la puissance de puissants modèles d'apprentissage automatique pour permettre le développement d'applications capables de reconnaître et de comprendre le contenu des images. L'API Cloud Vision présente les fonctionnalités suivantes:

C'est difficile à comprendre avec des mots seuls, alors essayons-le. Visitez la page Web ci-dessous pour essayer la démo.

Bien qu'il s'agisse d'un système de facturation, vous pouvez l'utiliser gratuitement jusqu'à 1000 demandes. Après cela, vous serez facturé en fonction du nombre de demandes.

Description du script

Écrivez un script pour utiliser l'API Vision. L'emplacement du script est ** plugins / apis / vision.py **. Ouvrez vision.py dans l'éditeur et réécrivez le contenu comme suit. Veuillez enregistrer après réécriture. Dans ce cas, veuillez utiliser UTF8 comme code de caractère.

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

En donnant le chemin et la clé API du fichier image à ** detect_text **, le texte du fichier image sera détecté, extrait et renvoyé. Exécutons-le pour vérifier l'opération.

Script de lancement

Exécutons le script que nous avons écrit plus tôt. Tout d'abord, allez dans le dossier ** plugins / tests **. Pouvez-vous voir que test_vision.py s'y trouve? Dans test_vision.py, il est spécifié d'appeler ** detect_text ** du script écrit précédemment. En d'autres termes, s'il fonctionne correctement, il doit renvoyer le texte de l'image lorsque vous le donnez.

Faisons le. Donnez example.png dans le dossier de données et exécutez. example.png

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

Avez-vous obtenu la chaîne suivante à la suite de l'exécution?

Kintone Co., Ltd.
Premier département des ventes du siège de Tokyo
Cai Ai Zutaro
23-4567
1 Nihonbashi Tenjikucho, Tokyo-2-3
Tel: 00-1234-5678
E-mail: [email protected]

Étape 2 (5 min) Extraire les noms et les noms de société à l'aide de l'API Natural Language

Cette section décrit d'abord l'API Natural Language. Après cela, écrivez un script pour utiliser l'API. Après l'écriture, exécutez le script pour vérifier l'opération. Commençons par l'explication de l'API.

Qu'est-ce que l'API Natural Language?

L'API Google Cloud Natural Language est une API REST facile à utiliser qui applique un modèle d'apprentissage automatique puissant pour reconnaître la structure et la signification du texte. L'API Natural Language possède les fonctionnalités suivantes:

C'est difficile à comprendre avec des mots seuls, alors essayons-le. Visitez la page Web ci-dessous pour essayer la démo.

Bien qu'il s'agisse d'un système de facturation, vous pouvez l'utiliser gratuitement jusqu'à 5000 demandes. Après cela, vous serez facturé en fonction du nombre de demandes.

Description du script

Écrivez un script pour utiliser l'API Natural Language. L'emplacement du script est ** plugins / apis / language.py **. Ouvrez language.py dans l'éditeur et réécrivez le contenu comme suit. Veuillez enregistrer après réécriture. Dans ce cas, veuillez utiliser UTF8 comme code de caractère.

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

En donnant du texte ** extract_entities ** et une clé API, vous pouvez extraire diverses expressions uniques. Cependant, cette fois, seuls ** nom de l'entreprise **, ** nom de la personne ** et ** emplacement ** sont extraits du texte. ** extract_required_entities ** est utilisé pour extraire ces informations.

Exécutons-le pour vérifier l'opération.

Script de lancement

Exécutons le script que nous avons écrit plus tôt. Tout d'abord, allez dans le dossier ** plugins / tests **. Pouvez-vous voir que test_language.py s'y trouve? test_language.py spécifie d'appeler ** extract_required_entities ** du script que j'ai écrit plus tôt. En d'autres termes, si cela fonctionne correctement, lorsque vous donnez un texte, il doit renvoyer le nom de l'entreprise, le nom de la personne et l'emplacement dans le texte.

Faisons le. Donnez example.txt dans le dossier de données et exécutez. Le résultat de la reconnaissance de caractères mentionné précédemment est inclus dans example.txt.

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

Avez-vous obtenu la chaîne suivante à la suite de l'exécution?

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

Étape 3 (3 min) Intégrez deux API pour extraire les informations des cartes de visite

Enfin, j'écrirai un script pour combiner l'API Vision et l'API Natural Language que j'ai écrit jusqu'à présent. Après l'écriture, exécutez le script pour vérifier l'opération. Commençons par écrire le script.

Description du script

Écrivez un script pour combiner l'API Vision et l'API Natural Language. L'emplacement du script est ** plugins / apis / integration.py **. Ouvrez integration.py dans un éditeur et réécrivez le contenu comme suit. Veuillez enregistrer après réécriture. Dans ce cas, veuillez utiliser UTF8 comme code de caractère.

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

En donnant le chemin et la clé API du fichier image à ** extract_entities_from_img **, il reconnaîtra et renverra le nom de l'entreprise et le nom de la personne dans le fichier image. Exécutons-le pour vérifier l'opération.

Script de lancement

Maintenant, exécutons le script. Tout d'abord, allez dans le dossier ** plugins / tests **. Pouvez-vous voir que test_integration.py s'y trouve? test_integration.py spécifie d'appeler ** extract_entities_from_img ** du script que j'ai écrit plus tôt. En d'autres termes, si cela fonctionne correctement, lorsque vous donnez une image, elle doit renvoyer le nom de l'entreprise, etc. dans l'image.

Faisons le. Donnez example.png dans le dossier de données et exécutez. example.png

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

Avez-vous obtenu la chaîne suivante à la suite de l'exécution?

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

en conclusion

Comment était-ce. J'ai essayé de gérer le développement en utilisant l'API Vision et l'API Natural Language, mais je pense que vous pourriez ressentir diverses possibilités en connectant les deux.

Ensuite, combinez les applications que vous avez créées jusqu'à présent avec Slack afin de pouvoir télécharger des images de cartes de visite sur Slack et les enregistrer dans kintone. Veuillez passer à l'article suivant.

Résumé de l'article

Le contenu de cette pratique est résumé dans trois articles.

Veuillez vous préparer à l'avance à partir de l'article suivant.

Recommended Posts

Extraire des informations de cartes de visite en combinant l'API Vision et l'API Natural Language
[Traitement du langage naturel] Extraire les mots-clés de la base de données Kakenhi avec MeCab-ipadic-neologd et termextract