ImageToTextTask: کپچای تصویری را حل کن
یک بدنه تصویر را پست میکند و متن را از آن ارسال میکند. متن فقط میتواند حاوی رقم، حرف، کاراکترهای ویژه و اسپیس باشد. انیمیشنهای GIF تا 500kb پشتیبانی میشوند. کپچای سفارشی مثل "گربهای را در این مجموعه تصویر پیدا کن و شماره آن را وارد کن " پشتیبانی نمیشود.
شیء وظیفه
خصوصیت | نوع | موردنیاز | مقدار پیشفرض | هدف |
---|---|---|---|---|
type | رشته | بله | ImageToTextTask | نوع وظیفه را تعریف میکند. |
body | رشته | بله | بدنه فایل که با base64 رمزگذاری شده است. حتماً آن را بدون شکستِ خط ارسال کنید. برچسب 'data:image/png,' یا برچسبهای مشابه را در آن قرار ندهید، فقط base64 پاکیزه باید وجود داشته باشد! | |
phrase | بولی | خیر | false | false : بدون نیاز true - کارگر را ملزم میکند که پاسخ را با حداقل یک "اسپیس" وارد کند. اگر هیچ اسپیسی وجود نداشته باشد، آنها از روی وظیفه میپرند، بنابراین از آن با احتیاط استفاده کنید. |
case | بولی | خیر | true | false : بدون نیاز true - کارگر یک علامت ویژه را مشاهده خواهد کرد که میگوید پاسخ باید بهصورت حساس به کوچکی و بزرگی حروف وارد شود. |
numeric | عدد صحیح | خیر | 0 | 0 : بدون نیاز 1 - فقط عدد مجاز است 2 - هیچ حرفی مجاز نیست و فقط عدد مجاز است |
math | بولی | خیر | false | false : بدون نیاز true - کارگر علامت ویژهای را مشاهده خواهد کرد که میگوید پاسخ باید محاسبه شود |
minLength | عدد صحیح | خیر | 0 | 0 : بدون نیاز >1 - حداکثر طول پاسخ را تعیین میکند |
maxLength | عدد صحیح | خیر | 0 | 0 : بدون نیاز >1 - حداکثر طول پاسخ را تعیین میکند |
comment | رشته | خیر | توضیحات اضافی برای کارگران مثل "حروف را به رنگ قرمز وارد کن". نتیجه تولید میشود و کاملاً به عهده کارگر است. | |
websiteURL | رشته | خیر | پارامتر اختیاری برای متمایزکردن منبع کپچاهای تصویری در آمارهای هزینه. |
نمونه درخواست
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 https://git.anti-captcha.com/sup/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://git.anti-captcha.com/sup/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 https://git.anti-captcha.com/sup/anticaptcha-csharp.git
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 https://git.anti-captcha.com/sup/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);
}
}
}
نمونه پاسخ
JSON بدون هیچ خطایی
{
"errorId": 0,
"taskId": 7654321
}
JSON با یک خطا
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
بازیابی راهحل
از متد getTaskResult برای درخواست راهحل استفاده کنید. قبل از اینکه درخواست اول را بفرستید، کمی به کارگر فرصت بدهید، مثلاً 5 ثانیه به او وقت بدهید. اگر کارگر همچنان شلوغ بود، 3 ثانیه بعد مجدداً تلاش کنید.
شیء راهحل وظیفه
خصوصیت | نوع | هدف |
---|---|---|
text | رشته | متن از کپچای تصویری |
url | رشته | آدرس وب کپچا که ما آن را برای 24 ساعت آینده ذخیره خواهیم کرد. این آدرس پس از این مدت حذف میشود |
نمونه پاسخ
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"
}