ImageToTextTask : вирішити капчу зображення
Надішліть тіло зображення та отримайте з нього текст. Текст може містити лише цифри, літери, спеціальні символи та пробіл. Підтримуються анімації GIF, обсягом до 500 кб. Кастомізовані капчі, такі як "знайти кота у цьому наборі зображень і ввести його номер", не підтримуються.
Пов’язаний посібник: Дізнайтеся, як відправити форму із зображенням капчі за допомогою Python
Об'єкт завдання
Властивість | Тип | Обов’язково | Значення за замовчуванням | Призначення |
---|---|---|---|---|
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"
}