[PYTHON] Extrahieren Sie Zeichen aus Bildern mithilfe der Zeichenerkennungs-API von docomo

Was du machen willst

Ich möchte Zeichen aus einem Bild mithilfe der API von docomo extrahieren.

** Nachtrag (16.02.2016) ** Das Programm wurde auf GitHub hochgeladen. → Quelle

Vorbereitungen

Zu erkennende Bilddatei (test.jpg)

test.jpg

Entwicklungsumgebung

--python 2.7 Serie

Programm

characterRecognition.py


#coding: utf-8
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2
import json
import time 
import urllib
import re
import sys

#Werfen Sie Bilddaten und erhalten Sie die Bild-ID im JSON-Format(Anforderung zur Erkennung von Szenenbildern)
def getImageID(fname):
    register_openers()
    url = 'https://api.apigw.smt.docomo.ne.jp/characterRecognition/v1/document?APIKEY=(Bitte geben Sie den API-Schlüssel ein)'
    
    f = open(fname, 'r')

    datagen, headers = multipart_encode({"image": f, 'lang': 'jpn'})
    request = urllib2.Request(url,datagen, headers)
    response = urllib2.urlopen(request)
    
    res_dat = response.read()
    return json.loads(res_dat)['job']['@id'] #Gibt die ID des Bildes zurück

#Extrahieren Sie nur Wörter aus dem erworbenen json.
def makeWordList(result):
    
    word_list = []
    count  = int(result['lines']['@count'])

    for i in range(count):
        word = result['lines']['line'][i]['@text']
        word_list.append(word)

    return word_list

#Erfassung der Ergebnisse der Szenenbilderkennung
def getWordList(img_id):

    register_openers()
    url = 'https://api.apigw.smt.docomo.ne.jp/characterRecognition/v1/document/' + img_id + '?APIKEY=(Bitte geben Sie den API-Schlüssel ein)'
    
    request = urllib2.Request(url)
    
    recog_result = {}
    for i in range(5):
        response = urllib2.urlopen(request)
        res_dat = response.read()
        
        recog_result = json.loads(res_dat)
        
        status = recog_result['job']['@status']
        
        if status == 'queue':
            print 'Akzeptieren...'
        elif status == 'process':
            print 'Erkennen...'
        elif status == 'success':
            print 'Erfolgreiche Anerkennung' #, recog_result
            word_list = makeWordList(recog_result)
            return word_list
        elif status == 'failure':
            print 'Erkennungsfehler'
            return None

        time.sleep(3) #warte ein wenig



if __name__ == '__main__':
    
    #Bild-ID abrufen
    img_id = getImageID(sys.argv[1])
    
    #Wortliste abrufen
    word_list = getWordList(img_id)
    
    #Zeigen Sie die erkannte Zeichenfolge an
    for word in word_list:
        print word

Ausführungsergebnis

>python characterRecognition.py test.jpg
Erkennen...
Erfolgreiche Anerkennung
Zeichenerkennungstest

Ergänzung (Beispiel des erworbenen json)

{
  "job": {
    "@status": "success",
    "@id": "(Bild-ID)", #Bild-ID
    "@queue-time": "2016/02/13 17:03:07"
  },
  "lines": {
    "line": [
      {
        "@text": "\u6587\u5b57\u8a8d\u8b58\u306e\u30c6\u30b9\u30c8", #Erkannte Zeichenkette
        "shape": {
          "@count": "4",
          "point": [       #Koordinaten auf dem Bild von Zeichen(Oben links, unten links, unten rechts, oben rechts)
            {
              "@x": "35",
              "@y": "33"
            },
            {
              "@x": "35",
              "@y": "67"
            },
            {
              "@x": "293",
              "@y": "67"
            },
            {
              "@x": "293",
              "@y": "33"
            }
          ]
        }
      }
    ],
    "@count": "1"
  },
  "message": null
}

Nachwort

Ich habe es vorerst für ein Memo geschrieben. Wenn Sie mehr wissen möchten, hinterlassen Sie bitte einen Kommentar.

Recommended Posts

Extrahieren Sie Zeichen aus Bildern mithilfe der Zeichenerkennungs-API von docomo
Kategorieschätzung mit der Bilderkennungs-API von docomo
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Erkennen Sie japanische Zeichen anhand von Bildern mithilfe der Cloud Vision-API von Google mit Python
Zeichenerkennung aus Bildern! Erklären Sie die Logik der 100% igen Genauigkeit mit dem Thema Wiire
Alterserkennung mit Peppers API
Bilderkennung mit API aus null Wissen mit AutoML Vision
Laden Sie Bilder von "Irasutoya" mit Scrapy herunter
Geotag-Vorhersage aus Bildern mit DNN
Extrahieren Sie mit Python Text aus Bildern
Gesichtserkennung mit Peppers API
Führen Sie Ansible über Python mithilfe der API aus
Ich habe versucht, Zeichen aus Untertiteln zu extrahieren (OpenCV: Google Cloud Vision API)
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
[Python] (Linie) Extrahieren Sie Werte aus Diagrammbildern
Laden Sie Bilder von der URL mit Pillow in Python 3
Anonymer Upload von Bildern mit der Imgur-API (mit Python)
Ich habe versucht, mit der Cloud Vision API von GCP automatisch erotische Bilder von Twitter zu sammeln