пятница, 5 сентября 2014 г.

Описание API вызова библиотеки ModiTextRecognize.DLL

Данная библиотека 'ModiTextRecognize.DLL' (далее DLL) предназначена для распознавания текста в графических документах и факсимильных сообщениях формата JPEG/PNG/GIF/BMP/TIFF на русском и/или английском (по выбору), с использованием OLE-интерфейса MODI.




Cистемные требования и зависимости
  1. Win32/64 (NT/2003/XP/7/8).
  2. MDIVWCTL.DLL, MSPGIMME.DLL в каталоге с библиотекой.
  3. Установленный Microsoft Office Document Imaging из пакета
  4. Microsoft Office SharePoint Designer для регистрации классов MODI http://www.microsoft.com/ru-ru/download/confirmation.aspx?id=21581 (распространяется бесплатно).
DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32/64-bit. Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Таблица расшифровок параметров экспортируемых функций 'recognize_ole()' и 'recognize_dll()' библиотеки:
 Параметр Функционал Тип переменной
 ========================================================
 tifpath путь к графическому документу PAnsiChar
 lang язык/языки распознавания PAnsiChar
 result распознанный текст PAnsiChar
Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL/XE5-7):
var
  recognize_ole: function(tifpath, lang: pansichar): pansichar; stdcall;
  recognize_dll: function(tifpath, lang: pansichar): pansichar; stdcall;
  LibHandle: THandle;


function LinkProc(h: thandle; ProcName: string):Pointer;
begin
 result:= GetProcAddress(h, PChar(ProcName))
end;

{ инициализация }
begin
 LibHandle:= LoadLibrary('ModiTextRecognize.dll');
 if LibHandle <> 0 then begin
  recognize_ole:= LinkProc(LibHandle, 'recognize_ole');
  recognize_dll:= LinkProc(LibHandle, 'recognize_dll');
 end;
...

{ пример вызова через OLE }
begin
 memo1.Lines.Text:=
  recognize_ole('1.bmp' {'2.jpg'} {'3.png'} {'4.tif'}, 'rus-eng')
 ...

{ пример вызова через DLL }
begin
 memo1.Lines.Text:=
  recognize_dll('1.bmp' {'2.jpg'} {'3.png'} {'4.tif'}, 'rus-eng')
 ...
Ниже показан пример вызова (под С):
function TestDLL()
{
  // определяем новый тип DLL
  setledsdll = DLL.DefineDLL("MyDLL");

  // описываем вызываемую функцию
  // последний параметр - возвращаемое значение, должен быть указан обязательно
  proc = setledsdll.DefineProc("recognize_dll", *char);

  // загружаем DLL в память, связывая имя DLL-файла с созданным ранее типом DLL
  lib = DLL.Load("ModiTextRecognize.dll", "MyDLL");

  // вызываем функцию
  lib.recognize_dll(pchar tifpath, lang): pchar;
}

ПОРЯДОК ИСПОЛЬЗОВАНИЯ
  1. Для успешной установки Microsoft Office Document Imaging (в новых версиях офиса отcутствует) предварительно запустите batch-файл 'path_prev_SharePointDesigner.bat', ОС Windows предупредит о замене оригинальных версий файлов, нажмите отмену и согласитесь с заменой.
  2. Функции распознавания 'recognize_ole()' и 'recognize_dll()' отличаются начальным механизмом обращения к интерфейсу MODI (первая вызывает создание объекта 'MODI.Document' из зарегистрированных в системе классов, вторая использует методы класса TDocument из хэдеров библиотеки 'MDIVWCTL.DLL').
  3. В качестве языка распознавания параметр 'lang' может быть задан как: "eng - английский, rus - русский, rus-eng - русско-английский".
  4. Поскольку MODI понимает лишь один графический формат TIFF, то для обеспечения всеядности в библиотеке 'ModiTextRecognize.DLL' реализована конвертация входящих форматов JPEG/PNG/GIF/BMP (и т.д.) средствами GDI+.

4 комментария:

  1. Сергей, возможно ли ознакомиться с библиотечкой для не коммерческих целей? Также интересует её поведение и зависимости в 64x.

    ОтветитьУдалить
  2. Здравствуйте, Vlad.
    В смысле ознакомиться? Ссылка на свободное скачивание под сабжем.

    Касательно 64bit: библиотека скомпилирована под 32-бит. Есть общий принцип для использования 32-х битных библиотек под 64-бит ОС (не только моей, а вообще всех) - это копирование их в специальный каталог SysWol64. Именно таким методом и показывается работоспособность, к примеру, моей либы GoogleSpeechRecognizeAPI3.DLL под 64-битной семеркой и восьмеркой (см. два предпоследних видео http://raxp2.blogspot.com/2015/04/api-googlespeechrecognizeapi3dll.html).

    ОтветитьУдалить
  3. Не совсем понятно, куда делся третий комментарий, но поскольку полный текст есть в почте - отвечаю тут: проблема понятна, Влад. Да, бывает. Вот дополнительная ссылка для скачивания https://yadi.sk/d/rbMmWEIrhXmuj

    ОтветитьУдалить

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.