ImageToTextTask : bir resimli captcha çöz
Bir resim gövdesi gönder ve ondan bir metin al. Metin sadece rakamlar, harfler, özel karakterler ve bir boşluk içerebilir. GIF animasyonları 500kb boyuta kadar desteklenmektedir. "Bu resimdeki kediyi bulun ve sayısını girin" gibi özel captchalar desteklenmemektedir.
Görev nesnesi
Özellik | Tip | Zorunlu | Varsayılan değer | Amaç |
---|---|---|---|---|
type | Dize | Evet | ImageToTextTask | Görevin bir tipini tanımlar. |
body | Dize | Evet | Dosya gövdesi base64 içinde şifrelenmiştir. Bunu satır sonları (line break) olmadan gönderdiğinizden emin olun. 'data:image/png,' veya benzeri etiketler eklemeyin, sadece temiz base64! | |
phrase | Boolean | Hayır | false | false - gereklilik yok true - çalışanın en az bir "boşluk" içeren bir cevap girmesini gerektirir. Boşluk yoksa görevi atlarlar, bu yüzden bunu dikkatle kullanın. |
case | Boolean | Hayır | true | false - gereklilik yok true - çalışan, cevabın büyük/küçük harf duyarlı olarak girilmesi gerektiğini söyleyen özel bir işaret görür. |
numeric | Tam sayı | Hayır | 0 | 0 - gereklilik yok 1 - sadece rakamlara izin verilir 2 - rakamlar dışında her harfe izin verilir |
math | Boolean | Hayır | false | false - gereklilik yok true - çalışan, cevabın hesaplanması gerektiğini söyleyen özel bir işaret görür. |
minLength | Tam sayı | Hayır | 0 | 0 - gereklilik yok >1 - cevabın minimum uzunluğunu tanımlar |
maxLength | Tam sayı | Hayır | 0 | 0 - gereklilik yok >1 - cevabın maksimum uzunluğunu tanımlar |
comment | Dize | Hayır | Çalışanlar için "harfleri kırmızı renkte gir" gibi ilave yorum. Sonucu garanti değildir ve tamamen çalışana bağlıdır. | |
websiteURL | Dize | Hayır | Harcama istatistiklerinde resimli captchaların kaynağını ayırt etmek için opsiyonel parametre. |
Talep örneği
CURL
curl -i -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST -d '{
"clientKey":"YOUR_API_KEY_HERE",
"task":
{
"type":"ImageToTextTask",
"body":"BASE64_BODY_HERE__NO_NEWLINES__NO_EXTRA_TAGS__ONLY_CLEAN_BASE64",
"phrase":false,
"case":false,
"numeric":0,
"math":false,
"minLength":0,
"maxLength":0
},
"softId": 0
}' https://api.anti-captcha.com/createTask
PHP
<?php
//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git
include("anticaptcha.php");
include("imagetotext.php");
$api = new ImageToText();
//your anti-captcha.com account key
$api->setKey("YOUR_API_KEY_HERE");
//setting file
$api->setFile("captcha.jpg");
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
$api->setSoftId(0);
//create task in API
if (!$api->createTask()) {
echo "API v2 send failed - ".$api->getErrorMessage()."\n";
exit;
}
$taskId = $api->getTaskId();
if (!$api->waitForResult()) {
echo "could not solve captcha\n";
echo $api->getErrorMessage()."\n";
} else {
$captchaText = $api->getTaskSolution();
echo "captcha text: $captchaText\n\n";
}
Python
#pip3 install anticaptchaofficial
from anticaptchaofficial.imagecaptcha import *
solver = imagecaptcha()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
solver.set_soft_id(0)
captcha_text = solver.solve_and_return_solution("captcha.jpeg")
if captcha_text != 0:
print "captcha text "+captcha_text
else:
print "task finished with error "+solver.error_code
NodeJS
//npm install @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm
const ac = require("@antiadmin/anticaptchaofficial");
const fs = require('fs');
const captcha = fs.readFileSync('captcha.png', { encoding: 'base64' });
ac.setAPIKey('YOUR_API_KEY_HERE');
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.setSoftId(0);
ac.solveImage(captcha, true)
.then(text => console.log('captcha text: '+text))
.catch(error => console.log('test received error '+error));
C#
//git clone git@github.com:AdminAnticaptcha/anticaptcha-csharp
using System;
using Anticaptcha_example.Api;
using Anticaptcha_example.Helper;
using Newtonsoft.Json.Linq;
namespace Anticaptcha_example
{
internal class Program
{
private static void Main() {
DebugHelper.VerboseMode = true;
var api = new ImageToText
{
ClientKey = "YOUR_API_KEY_HERE",
FilePath = "captcha.jpg",
// Specify softId to earn 10% commission with your app.
// Get your softId here:
// https://anti-captcha.com/clients/tools/devcenter
SoftId = 0
};
if (!api.CreateTask())
DebugHelper.Out("API v2 send failed. " + api.ErrorMessage, DebugHelper.Type.Error);
else if (!api.WaitForResult())
DebugHelper.Out("Could not solve the captcha.", DebugHelper.Type.Error);
else
DebugHelper.Out("Result: " + api.GetTaskSolution().Text, DebugHelper.Type.Success);
}
}
}
Java
//git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git
package com.anti_captcha;
import com.anti_captcha.Api.ImageToText;
import com.anti_captcha.Helper.DebugHelper;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {
DebugHelper.setVerboseMode(true);
ImageToText api = new ImageToText();
api.setClientKey("YOUR_API_KEY_HERE");
api.setFilePath("captcha.jpg");
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
api.setSoftId(0);
if (!api.createTask()) {
DebugHelper.out(
"API v2 send failed. " + api.getErrorMessage(),
DebugHelper.Type.ERROR
);
} else if (!api.waitForResult()) {
DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
} else {
DebugHelper.out("Result: " + api.getTaskSolution().getText(), DebugHelper.Type.SUCCESS);
}
}
}
Yanıt örneği
hatasız JSON
{
"errorId": 0,
"taskId": 7654321
}
hatalı JSON
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
Çözümü getir
Çözümü talep etmek için getTaskResult yöntemini kullan. İlk talebi yapmadan önce çalışanlara 5 saniye gibi bir süre ver. Çalışan hala meşgulse 3 saniye içinde tekrar dene.
Görev çözüm nesnesi
Özellik | Tip | Amaç |
---|---|---|
text | Dize | Resimden metin captcha |
url | Dize | Takip eden 24 saat için captchayı tutacağımız web adresi. Bu süreden sonra silinir. |
Yanıt örneği
hatasız JSON
{
"errorId":0,
"status":"ready",
"solution":
{
"text":"deditur",
"url":"http://61.39.233.233/1/147220556452507.jpg"
},
"cost":"0.000700",
"ip":"46.98.54.221",
"createTime":1472205564,
"endTime":1472205570,
"solveCount":"0"
}