#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