La dernière fois a implémenté un perceptron multicouche en utilisant "Chainer" et a essayé de reconnaître les images CAPTCHA. .. Cette fois, j'essaierai la même chose en utilisant l'API d'analyse d'image de Google "API Cloud Vision".
Cette fois, j'ai créé une classe d'analyse d'image simple pour la vérification. Comme vous pouvez le voir, il POST simplement la requête au format JSON définie par l'API Cloud Vision.
MyRecognitionImage.py
#!/usr/bin/python
#coding:utf-8
import base64
import json
from requests import Request, Session
#Analysez les images avec l'API Cloud Vision
class RecognizeImage():
def __init__(self):
return
#Analyse de CAPTCHA
def recognize_captcha(self, str_image_path):
#Chargement des images CAPTCHA
bin_captcha = open(str_image_path, 'rb').read()
#Encoder des images CAPTCHA avec base64
str_encode_file = base64.b64encode(bin_captcha)
#Spécifiez l'URL de l'API
str_url = "https://vision.googleapis.com/v1/images:annotate?key="
#Clé API obtenue à l'avance
str_api_key = "XXXXXXXXX"
# Content-Définir le type sur JSON
str_headers = {'Content-Type': 'application/json'}
#Définissez la charge utile JSON conformément aux spécifications de l'API Cloud Vision.
#Pour extraire le texte de l'image CAPTCHA, le type est "TEXT"_Réglez sur "DETECTION".
str_json_data = {
'requests': [
{
'image': {
'content': str_encode_file
},
'features': [
{
'type': "TEXT_DETECTION",
'maxResults': 10
}
]
}
]
}
#Envoyer une demande
obj_session = Session()
obj_request = Request("POST",
str_url + str_api_key,
data=json.dumps(str_json_data),
headers=str_headers
)
obj_prepped = obj_session.prepare_request(obj_request)
obj_response = obj_session.send(obj_prepped,
verify=True,
timeout=60
)
#Acquisition des résultats d'analyse
if obj_response.status_code == 200:
print obj_response.text
return obj_response.text
else:
return "error"
Les trois points suivants doivent être notés lors de l'utilisation de l'API.
Lorsque le code ci-dessus est exécuté, la requête suivante est POSTÉE.
POST /v1/images:annotate?key=XXXXXXXXX HTTP/1.1
User-Agent: python-requests/2.8.1
Host: vision.googleapis.com
Accept: */*
Content-Type: application/json
Content-Length: 939
{
"requests":[
{
"image":{
"content": "iVBORw0KGgoAAAANSUhEUgA ・ ・ ・(réduction)・ ・ ・/EV4ihonpXVAAAAAElFTkSuQmCC"
},
"features":[
{
"type":"TEXT_DETECTION",
"maxResults":10
}
]
}
]
}
Spécifiez les données d'image encodées en Base64 dans "contenu" et spécifiez le contenu d'analyse que vous souhaitez exécuter dans "type". Puisque nous voulons reconnaître CAPTCHA cette fois, spécifiez l'extraction de texte "TEXT_DETECTION". En plus de l'extraction de texte, l'analyse suivante peut être effectuée.
Par exemple, si vous POSTER une image de la gare de Tokyo, vous pouvez la reconnaître comme "Gare de Tokyo", et si vous POSTEZ une image qui vous convient, vous pouvez la reconnaître comme "heureuse". J'aimerais les essayer à l'avenir.
L'analyse d'image nécessite beaucoup de puissance de la machine, donc c'était un obstacle de taille à travailler en tant que passe-temps. Cependant, n'importe qui peut facilement effectuer une analyse d'image en utilisant cette API. Quelle merveilleuse API!
Utilisons ceci pour reconnaître immédiatement CAPTCHA.
Tout d'abord, à partir de maintenant.
Le texte extrait est envoyé vers "description".
1er résultat d'analyse
{
"responses": [
{
"textAnnotations": [
{
"locale": "en",
"description": "O l 4.67 9\n",
"boundingPoly": {
"vertices": [
{
"x": 6,
"y": 1
},
{
"x": 165,
"y": 1
},
{
"x": 165,
"y": 35
},
{
"x": 6,
"y": 35
}
]
}
}
]
}
]
}
Le résultat est "O l 4,67 9". 0 (zéro) est la lettre supérieure O "O", 1 (ichi) est la lettre inférieure "l", et il y a des points étranges, mais on peut voir qu'ils sont généralement reconnus correctement. On peut dire que le taux de réponse correcte est de 100%.
Vient ensuite le deuxième.
Cela a été décevant lors des validations passées, mais qu'en est-il de l'API Cloud Vision?
Deuxième résultat d'analyse
{
"responses": [
{
"textAnnotations": [
{
"locale": "en",
"description": "496'0,\n",
"boundingPoly": {
"vertices": [
{
"x": 6,
"y": 10
},
{
"x": 148,
"y": 10
},
{
"x": 148,
"y": 70
},
{
"x": 6,
"y": 70
}
]
}
}
]
}
]
}
L'ordre de sortie du texte est légèrement modifié, mais «4», «0», «9» et «6» peuvent être reconnus. La dernière fois, le taux de reconnaissance était de 50%, donc on voit qu'il s'est amélioré.
C'est le dernier.
Troisième résultat d'analyse
{
"responses": [
{
"textAnnotations": [
{
"locale": "en",
"description": "425970\n",
"boundingPoly": {
"vertices": [
{
"x": 5,
"y": 7
},
{
"x": 97,
"y": 7
},
{
"x": 97,
"y": 33
},
{
"x": 5,
"y": 33
}
]
}
}
]
}
]
}
bien joué!! Vous pouvez voir que tout peut être reconnu avec précision.
Il est possible d'extraire du texte avec une précision assez élevée, probablement parce qu'il apprend en fonction de l'énorme quantité de données d'image détenues par Google. Cela pourrait être utilisé pour la reconnaissance CAPTCHA.
D'ailleurs, dans le nouveau CAPTCHA "reCAPTCHA" développé par Google, le même animal / chose est sélectionné parmi plusieurs images comme indiqué ci-dessous. Il semble qu'il distingue les humains des robots.
Dans cet exemple, il est nécessaire de sélectionner toutes les mêmes images que l'image du haut (chat), donc la bonne réponse est de sélectionner la première en haut à gauche et la deuxième et la troisième en bas à gauche.
En passant, j'ai confirmé que l'API Cloud Vision pouvait être utilisée pour distinguer avec précision les chats et les chiens.
J'ai essayé de reconnaître CAPTCHA à l'aide de l'API Cloud Vision. Bien qu'il y ait quelques améliorations, les résultats sont suffisants pour être utilisés pour la reconnaissance CAPTCHA.
Il a également été constaté qu'il est possible de percer non seulement de simples CAPTCHA (images numériques, etc.) mais également des images avancées telles que reCAPTCHA. Cette API sera facturée après la période d'essai, mais étant donné que vous pouvez écrire votre propre code ou préparer une machine avec des spécifications élevées, nous pensons que les performances de coût sont élevées.
À l'avenir, après plusieurs vérifications, je souhaiterais l'utiliser pour le moteur de reconnaissance CAPTCHA du robot d'exploration automatique des applications Web.
c'est tout
Recommended Posts