#cs
Скрипт предназначен для пакетного автоматического распознавания файлов изображений, обход всех подкаталогов.
Для файлов изображений из текущего каталога и его подкатолгов создаются соответствующие автоматически распознанные документы с названием all.pdf, .doc или др.
Папки пакетов не создаются. Порядок страниц в документах - по алфавитному порядку списков файлов изображений (реализация FR).
Необходимо: FR 8.0., AutoIt3 (http://www.autoitscript.com/autoit3/)
Предварительные настройки:
Установить в системе раскладку клавиатуры умолчанию - английский.
Запустить FR и его интерфейс переключить на английский.
Открыть FR-ом любые (желательно небольшие) файлы изображений из папки выбрать необходимые опции распознавания, распознать и сохранить в нужном формате.(Это нужно для сохранения настроек FR)
При этом обратить внимание, чтобы в диалоге открытия изображений и сохранения результатов распознавания стоял нужный Вам тип файла, было выбрано All pages, сделаны все настройки форматирования.
После сохранения файла, FR закрыть.
При поврежденном файле изображения скрипт приостанавливает выполнение и ждет нажатия кнопки, после чего выполнение прожолжается.
При необходимости изменить константу $FR_dir.
Данный скрипт положить в папку с файлами изображений и запустить его.
22.12.07. Alex
#ce
Const $FR_dir = "C:\Program Files\ABBYY FineReader 8.0 Professional Edition\"
$file = FileOpen("start.bat", 2); создаем временные файлы.
If $file = -1 Then
MsgBox(0, "Error", "Unable to create bat file.")
Exit
EndIf
FileWriteLine($file, "chcp 1251")
FileWriteLine($file, "dir /ad /b /on /s > list_folder.txt" ); формируем список подкаталогов
FileClose($file)
RunWait("start.bat" , "", @SW_HIDE)
Run($FR_dir&"FineReader.exe")
AutoItSetOption ( "WinTitleMatchMode" , 2 )
$file2 = FileOpen("list_folder.txt", 0)
If $file2 = -1 Then
MsgBox(0, "Error", "Unable to open list file.")
Exit
EndIf
While 1
$line = FileReadLine($file2)
If @error = -1 Then ExitLoop
WinWaitActive("ABBYY")
SendKeepActive("ABBYY")
Send("^n", 0); новый пакет
Sleep(1500)
Send("^+D")
WinWaitActive("Open")
ControlSetText ( "Open", "", "Edit1", $line ); открытие папки
ControlClick ( "Open", "", "Button2" )
Sleep(1000);
If ControlListView ( "Open", "", "SysListView321", "GetItemCount" ) = 0 Then
Send("{ESC}")
ContinueLoop
EndIf
ControlListView ( "Open", "", "SysListView321", "SelectAll" );
Send("{ENTER}")
Sleep(1000)
If WinExists ( "Open" ) Then
Send("{ESC}")
ContinueLoop
EndIf
WinWaitClose("Adding")
WinWaitClose("Reading")
Sleep(500);
WinWaitActive("ABBYY")
Sleep(1000);
Send("^s")
WinWait("Save")
Sleep(500);
ControlSetText ( "Save", "", "Edit1", $line&"\all" ); сохраняем результаты распознавания под именем ALL
Send("{ENTER}")
Sleep(500);
WinWaitClose("Saving")
Send("!f")
Send("c") ;Закрываем пакет
WinWait("ABBYY","Do you want to save")
Sleep(1000);
ControlClick ( "ABBYY","Do", "Button2" )
Sleep(1000);
WEnd
FileClose($file2)
FileDelete("start.bat")
FileDelete("list_folder.txt"); удаляем временные файлы.