#cs
    ocrdjvu 1.0 alpha.
    Скрипт предназначен для пакетной обработки djvu файлов (добавления текстового слоя).
    Необходимо: FR 8.0., AutoIt3 , FRFGrab, djvused, DjVuDecode
    Предварительные настройки:
    Установить в системе раскладку клавиатуры умолчанию - английский.
    Запустить FR и его интерфейс переключить на английский.
    В опциях FR выбрать языки распознавания и убрать галку "Распознавать штрих-коды".
    При необходимости изменить константы $FR_dir, $FRFGrab_dir, $djvused_dir, $DjvuDecode_dir.
    Данный скрипт поместить в папку с djvu файлами и запустить его.
    На диске должно быть достаточно свободного места, создаются временные файлы в рабочей папке.
    03.02.07.
    U235
#ce
;---- основная программа-----------
Const $FR_dir = "C:\Program Files\ABBYY FineReader 8.0 Professional Edition\"
Const $FRFGrab_dir= "C:\DjvuOCR\"
Const $djvused_dir= "C:\DjvuOCR\"
Const $DjvuDecode_dir= "C:\DjvuOCR\decoder\"
$search = FileFindFirstFile("*.djv*")
If $search = -1 Then
    MsgBox(0, "Error", "No djvu files")
    Exit
EndIf
While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    Djvu2TIFF($file)
    TIFF2FRF("pic.tif")
    FRF2TXT()
    TXT2DJVU($file)
    Clear()
WEnd
FileClose($search)
;---- конец основной программы -----------


;---- функции --------------------------------------
Func Djvu2TIFF($name); конвертер djvu to multipage tiff.
    RunWait($DjvuDecode_dir&"DjvuDecode.exe --output-format=tif  """&$name&""" pic.tif","",@SW_HIDE )
EndFunc   ;==>Djvu2TIFF
;---------------------------------------------------
Func TIFF2FRF($name) ; распознавание и создание папки-пакета с frf файлами
    Run($FR_dir&"FineReader.exe")
    AutoItSetOption ( "WinTitleMatchMode" , 2 )
    WinWaitActive("ABBYY")
    SendKeepActive("ABBYY")
    Send("^n", 0); новый пакет
    Send("!f") ;
    Send("v")
    WinWaitActive("Save")
    Sleep(1000)
    ControlSetText ( "Save", "", "Edit1", @WorkingDir&"\FRF" );   создаем папку пакета
    Sleep(1000)
    Send("{ENTER}")
    Sleep(1000)
    Send("^+D")
    Sleep(1000)
    ControlSetText ( "Open", "", "Edit1", @WorkingDir&"\"&$name ); открытие и распознавание tiff файла
    Send("{ENTER}")
    WinWaitClose("Adding")
    WinWaitClose("Reading")
    Sleep(1000);
    WinWaitActive("ABBYY")
    Sleep(1000);
    WinClose ( "ABBYY"  )
    WinWaitClose("ABBYY")
EndFunc   ;==>TIFF2FRF
;---------------------------------------------------
Func FRF2TXT();извлечение текста из frf файлов
    RunWait("cmd.exe /C "&$FRFGrab_dir&"FRFgrab.exe -g -h "&@WorkingDir&"\FRF\*.frf > book.txt",@WorkingDir,@SW_SHOWMAXIMIZED )
EndFunc   ;==>FRF2TXT
;---------------------------------------------------
Func TXT2DJVU($name); вставка текстового слоя
    RunWait('cmd.exe /C '&$djvused_dir&'djvused.exe -f book.txt  "'&$name&'"', @WorkingDir,@SW_SHOWMAXIMIZED )
EndFunc   ;==>TXT2DJVU
;----------------------------------------------------
Func Clear(); чистка временных файлов
    FileDelete ( @WorkingDir&"\FRF\*.*")
    DirRemove ( @WorkingDir&"\FRF" )
    FileDelete ( "pic.tif")
    FileDelete ( "book.txt")
EndFunc   ;==>Clear
Hosted by uCoz