Delphi→ Компонент Antigate для Delphi
Окт 24, 2010
Надоело постоянно копировать блок кода, отвечающего за распознавание текста с картинки (каптчи), поэтому быстро набросал отдельный модуль для работы через сервис antigate.com. О том как его использовать, читайте далее…
Конструктор Create
Конструктор создает объект класса TAntigate.
constructor Create; overload;
Создает экземпляр класса без дополнительных параметров.
constructor Create(AKey: string); overload;
Создает экземпляр класса, в качестве аргумента AKey указывается ключ сервиса.
constructor Create(AParam: TAntiParam); overload;
Создает экземпляр класса, в качестве аргумента AParam указывается указатель на структуру TAntiParam.
Функция Recognize
Запускает распознавание текста с картинки.
function Recognize: string;
Распознает картинку и возвращает распознанный текст.
Процедура LoadFromFile
Загрузка распознаваемой картинки из файла.
procedure LoadFromFile(AFileName: string);
Загружается файл для распознавания, в качестве параметра AFileName путь до файла.
Процедура LoadFromStream
Загрузка распознаваемой картинки из потока.
procedure LoadFromStream(AFileName: string; AStream: TStream);
Загружается файл для распознавания, в качестве параметров: AFileName — имя файла, AStream — поток данных.
Функция GetBalance
Получение текущего баланса на сервисе.
function GetBalance: string;
Функция возвращает текущий баланс сервиса.
Процедура Abuse
Жалоба на последнюю распознанную каптчу.
procedure Abuse;
Жалуется на последнюю некорректно разгаданную каптчу.
Свойство OnEvent
Событие возникающее при появлении ошибок при распознавании.
property OnEvent: TEvent read FEvent write FEvent;
Свойство в качестве параметра принимает процедуру (событие).
Свойство Key
Задает ключ к antigate.com, если в конструкторе он не был указан.
property Key: string read FKey write FKey;
Свойство в качестве параметра принимает ключ сервиса.
Свойство Phrase
Указывает, что на картинке более одного слова.
property Phrase: integer read FPhrase write FPhrase;
Свойство может принимать следующие значения:
0 — (default) одно слово,
1 — более одного слова
Свойство Regsens
Указывает, что текст зависит от регистра букв.
property Regsens: integer read FRegsens write FRegsens;
Свойство может принимать следующие значения:
0 — (default) не чувствителен к регистру,
1 — чувствителен к регистру
Свойство Calc
Указывает, что цифры на картинке должны быть сложены арифметически.
property Calc: integer read FCalc write FCalc;
Свойство может принимать следующие значения:
0 — (default) не складывать,
1 — складывать арифметически
Свойство Numeric
Указывает, что текст состоит только из цифр или букв.
property Numeric: integer read FNumeric write FNumeric;
Свойство может принимать следующие значения:
0 — (default) возможны буквы и цифры,
1 — только цифры,
2 — только буквы
Свойство Russian
Указывает, что на картинки русские буквы.
property Russian: integer read FRussian write FRussian;
Свойство может принимать следующие значения:
0 — (default) на любом языке,
1 — на русском языке,
2 — на русском и английском языке
Свойство MinLen
Устанавливает минимальное число символов на картинке.
property MinLen: integer read FMinLen write FMinLen;
Свойство может принимать следующие значения:
0 — (default) нет минимальной длины,
0..20 — минимальная длина текста
Свойство MaxLen
Устанавливает максимальное число символов на картинке.
property MaxLen: integer read FMaxLen write FMaxLen;
Свойство может принимать следующие значения:
0 — (default) нет максимальной длины,
0..20 — максимальная длина текста
Свойство MaxRetry
Устанавливает количество повторений между проверкой статуса разгадывания.
property MaxRetry: integer read FMaxRetry write FMaxRetry;
Свойство может принимать все значения от 1 и больше, по умолчанию 10.
Свойство WaitTime
Устанавливает задержку между повторениями проверки статуса разгадывания.
property WaitTime: integer read FWaitTime write FWaitTime;
Свойство может принимать все значения от 0 и больше, задается в миллисекундах, по умолчанию 5000.
Свойство AntiParam
Принимает структуру со значениями основных параметров.
property AntiParam: TAntiParam read FGetAntiParam write FSetAntiParam;
Свойство в качестве параметра принимает структуру TAntiParam.
Структура TAntiParam
Служит для единоразового задания основных параметров сервиса.
type TAntiParam = record Key: string; Phrase: integer; Regsens: integer; Calc: integer; Numeric: integer; Russian: integer; MinLen: integer; MaxLen: integer; MaxRetry: integer; WaitTime: integer; end;
Передается объекту TAntigate в конструкторе или присвоением свойства AntiParam.
Класс TAntiError
Содержит константы со всеми ошибками сервиса.
type TAntiError = class private public const CAPTCHA_NOT_READY = 'CAPCHA_NOT_READY'; const ERROR_NO_SLOT_AVAILABLE = 'ERROR_NO_SLOT_AVAILABLE'; const ERROR_KEY_DOES_NOT_EXIST = 'ERROR_KEY_DOES_NOT_EXIST'; const ERROR_ZERO_CAPTCHA_FILESIZE = 'ERROR_ZERO_CAPTCHA_FILESIZE'; const ERROR_TOO_BIG_CAPTCHA_FILESIZE = 'ERROR_TOO_BIG_CAPTCHA_FILESIZE'; const ERROR_WRONG_FILE_EXTENSION = 'ERROR_WRONG_FILE_EXTENSION'; const ERROR_IP_NOT_ALLOWED = 'ERROR_IP_NOT_ALLOWED'; const ERROR_WRONG_ID_FORMAT = 'ERROR_WRONG_ID_FORMAT'; const ERROR_NO_SUCH_CAPCHA_ID = 'ERROR_NO_SUCH_CAPCHA_ID'; const ERROR_URL_METHOD_FORBIDDEN = 'ERROR_URL_METHOD_FORBIDDEN'; const OK_REPORT_RECORDED = 'OK_REPORT_RECORDED'; const ERROR_HTTP_REQUEST = 'ERROR_HTTP_REQUEST'; const ERROR_CAPTCHA_TIMEOUTED = 'ERROR_CAPTCHA_TIMEOUTED'; end;
Необходим при обработке возвращаемых значений в OnEvent(AMessage: string);
Пример использования:
unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Antigate; type TfrmAntigate = class(TForm) btnRecognize: TButton; lstLog: TListBox; procedure btnRecognizeClick(Sender: TObject); private public procedure OnLog(AMessage: string); end; var frmAntigate: TfrmAntigate; implementation {$R *.dfm} procedure TfrmAntigate.btnRecognizeClick(Sender: TObject); var Antigate: TAntigate; begin Antigate := TAntigate.Create; Antigate.OnEvent := OnLog; Antigate.Key := 'ключ_антикаптчи'; Antigate.LoadFromFile('C:\captcha.jpg'); ShowMessage(Antigate.Recognize); Antigate.Abuse; ShowMessage(Antigate.Balance); Antigate.Free; end; procedure TfrmAntigate.OnLog(AMessage: string); begin lstLog.Items.Add(AMessage); end; end.
Скачать antigate.zip
Похожие статьи: