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

Похожие статьи:

  1. Создаем компонент TCP на Winsock (Часть 2)
  2. Привязка к железу в Delphi
  3. Создаем компонент TCP на Winsock (Часть 1)
  4. Компонент QuickSlide
  5. Многопоточность в Delphi

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *