انواع وظیفه مورد پشتیبانی
متدهای API
مقالات
خودآموزها
GitHub
منوی مستندات

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"
}