Что нового

Нужны примеры, как можно нажать на кнопку

Автор
L

lemonia

Новичок
Сообщения
126
Репутация
0
В этом сообщении готовые рабочие решения, которые Khaibit доводил до ума в результате многочисленных тестов на моём компьютере.

Здесь резервная копия скриптов, с помощью которой люди могут обрабатывать большие объёмы документов, чтобы найти поисковыми программами неизвестные данные для востановления или развития энергетики, ресурсосбережения, экономики, медицины и т.д.[hide]
Например с бесплатной версией SearchInform http://forum.ru-board.com/topic.cgi?forum=5&topic=16310 (Последняя free версия, которую смог найти 4.7.45, извлечь надо текст в txt формат для хорошей обработки программой Balabolka, обязательно в ANSI формате (не UTF-8), в SearchInform при ручном добавлении синонимов этот функционал хуже работает, лучше особо не расcчитывать на это).

Более подробные инструкции по всем скриптам и дополнительный софт на http://vedomo.ru/a/s/paketnaia/raspoznati-mnogo-PDFiDJVU.htm
Резервную копию планирую разместить здесь https://cloud.mail.ru/public/BaGG/1GWefS2Rn
На этом форуме резервная копия других скриптов в теме:
http://autoit-script.ru/index.php?topic=23694.0 (во вложениях к 2 сообщениям).

Все скрипты должны быть расположены в папке с программой DJVUOCR версии 2.3. Работа предполагается в операционной системе Windows XP. Всё предназначалось и тестировалось для папок и файлов с числовыми именами. Djvu файлов в папке надо чтобы было общим количеством не больше 1000 страниц (автоматически можно разложить специальным софтом, смотрите по ссылке). Может это и не так, интуитивно так предполагаю. Автор DJVUOCR допускает до 1167, что в виде исключения делал для файла, который имел больше 1000 страниц и менее 1167). Папки с файлами должны быть расположены в общей папке. Путь до неё прописывается в скриптах. Сейчас это D:\djvu\123\.То есть подпапки с файлами располагать в папке «123».
Настраиваем DJVUOCR для извлечения страниц в сером формате и сохраняем это по умолчанию (интерфейс надо выставить на английском языке) и запускаем «Распаковка.au3».

Рекомендую начинать обработку не более, чем с 4-5 папками проектов для Finereader (если Вы научились всем действиям на небольшом объёме документов) и увеличивать при необходимости, если всё будет нормально с этим количеством. Чтобы в случае сбоя не пришлось потратить много времени на переделывание.

Далее распознаём пакеты заданий в Finereader 8 (в автоматическом режиме специально предназначенным для этого скриптом AutoIT (ищите на другой странице по ссылке выше)).

Далее нажимаете
«Тест после распознавания без скриншотов.au3»
Если когда то попадётся страница с ошибкой, то скрипт должен остановить исполнение теста и Вы увидите стандартное окно с сообщением.
Зная, в какой папке есть проблемный файл, можно запустить
«Проверка перед запаковкой.au3». Он в директорию с подпапками должен сделать скриншот окна с сообщением о проблемном файле. Если скриншот делается, то в дальнейшем можете пользоваться «Проверка перед запаковкой.au3», а «Тест после распознавания без скриншотов.au3» не применять. Так предлагаю, потому что раньше на одном компьютере столкнулся с проблемой, что скриншоты не создавались при работе с AutoIT скриптом.

Для следующего шага для слабого компьютера с одноядерным процессором рекомендуется установить программу ограничения нагрузки на процессор. Потому что, если этого не сделать, работа может быть прервана ошибкой и об этом сообщает системное сообщение операционной системы. Скачиваем отсюда http://mion.faireal.net/BES/#download . На момент написания этого текста у меня установлена версия 1.6.3.
После запуска ограничителя ресурсов процессора выбирите «File»-«Watch...». Если не активно после предыдущей работы, то надо закрыть и снова открыть программу.
Вот так предлагал ранее, это не самый лучший вариант:
В ручном режиме запускаем внедрение распознанного текста в файлы djvu. Нажимаем на «Target», выбираем djvused.exe во время обработки и жмём «Limit this». В дальнейшем программа будет сама обнаруживать запуск утилиты и выставлять ограничение нагрузки. Как по умолчанию программа сама предлагала величину уменьшения, так и оставлял, в настройках не менял.
Нажимаем«Запаковка.au3» или
«Запаковщик с остановкой без скриншотов.au3»
В этих скриптах внедрения распознанного текста тест на ошибки делается ещё раз перед обработкой каждой папки.

Распаковка.au3:
Код:
$path = 'D:\djvu\123\' ; вставить путь к папке с папками
Run('DjvuOCR.exe'); запуск программы рядом со скриптом
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:16]');decoder
Sleep(250)
$search1 = FileFindFirstFile($path & '*.*')
Local $folder
While 1
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 And Not FileExists($path & $folder & '\' & $folder & '.dprj') Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:10]');add
        WinWait('Select DJVU file', '')
        ControlSetText('Select DJVU file', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder)
        ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]'); нажимаем открыть
        Sleep(250)
        ControlListView('Select DJVU file', '', '[CLASS:SysListView32; INSTANCE:1]', 'SelectAll')
        Sleep(250)
        ControlClick('Select DJVU file', '', '[CLASS:Button; INSTANCE:2]') ; нажимаем открыть
        WinWaitClose('Select DJVU file', '')
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:2]', $path & $folder); вставляем папку назачения
        Sleep(250)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]');жмем прогресс
        Sleep(250)
        WinWait('Decoding process...', 'Stop decoding')
        While WinExists('Decoding process...')
            If WinExists('DJVUDecode.exe') Then ControlClick('DJVUDecode.exe', '', '[CLASS:Button; INSTANCE:1]')
            If ControlCommand('Decoding process...', '', '[CLASS:Button; INSTANCE:2]', 'IsEnabled') And ControlGetText('Decoding process...', '', '[CLASS:Button; INSTANCE:1]') = 'Close' Then
                ControlClick('Decoding process...', '', '[CLASS:Button; INSTANCE:1]')
            EndIf
            Sleep(50)
        WEnd
        WinWait('Decoder', '')
        ControlClick('Decoder', '', '[CLASS:Button; INSTANCE:1]');yes
        WinWait('Name for output OCR TXT file', '')
        ControlSetText('Name for output OCR TXT file', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder)
        Sleep(250)
        ControlClick('Name for output OCR TXT file', '', '[CLASS:Button; INSTANCE:2]');save
        Sleep(250)
        ControlSetText('Name for output OCR TXT file', '', '[CLASS:Edit; INSTANCE:1]', $folder)
        Sleep(250)
        ControlClick('Name for output OCR TXT file', '', '[CLASS:Button; INSTANCE:2]');save
        Sleep(250)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:32]');Create FR8 Batch
        Sleep(10000);10sek
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:14]'); мжеме очиститиь
        Sleep(250)
    EndIf
WEnd


Тест после распознавания без скриншотов.au3:
Код:
Local $path = 'D:\djvu\123\'
Local $folder, $count, $i, $s1 = 250, $s2 = 100
Run('DjvuOCR.exe')
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]')
Sleep($s1)
$search1 = FileFindFirstFile($path & '*.*')
Sleep($s1)
While 1
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:17]');clean all
        Sleep($s1)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:29]');load decoder project
        WinWait('Select DECODER project', '')
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder);выбираем папку проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $folder);выбираем файл проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:3]', $path & $folder);выбираем папку fine reader
        Sleep($s1)
        If ControlCommand('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', "IsEnabled") Then ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', $path & $folder) ;Save OCR layers as TXT files
        Sleep($s1)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:25]');тест проекта
        Sleep($s1)
        While WinExists('Processing...', '')
            If ControlCommand('Processing...', '', '[CLASS:Button; INSTANCE:1]', "IsEnabled") Then
                Sleep($s1)
                ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:17]');clean all
                Exit
            EndIf
            Sleep($s1)
        WEnd
    EndIf
WEnd


Проверка перед запаковкой.au3:
Код:
#include <ScreenCapture.au3>
Local $path = 'D:\djvu\123\'
Local $folder, $count, $i, $s1 = 250, $s2 = 100
Run('DjvuOCR.exe')
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]')
Sleep($s1)
$search1 = FileFindFirstFile($path & '*.*')
While 1
    $loop = 0
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:29]');load decoder project
        WinWait('Select DECODER project', '')
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder);выбираем папку проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $folder);выбираем файл проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:3]', $path & $folder);выбираем папку fine reader
        Sleep($s1)
        If ControlCommand('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', "IsEnabled") Then ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', $path & $folder) ;Save OCR layers as TXT files
        Sleep($s1)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:25]');тест проекта
        Sleep($s1)
        While WinExists('Processing...', '')
            $loop += 1
            If ControlCommand('Processing...', '', '[CLASS:Button; INSTANCE:1]', "IsEnabled") Then ; если активна кнопка Выход, значит ошибка
                $pos = WinGetPos('Processing...', '')
                _ScreenCapture_Capture($path  & @HOUR & @MIN & @SEC & '.jpg', $pos[0], $pos[1], $pos[0] + $pos[2], $pos[1] + $pos[3]) ;делаем скрин
                ControlClick('Processing...', '', '[CLASS:Button; INSTANCE:1]') ; нажимаем выход
                SetError(1)
            EndIf
            Sleep($s1)
            If $loop >= $s1 Then; если прошло больше минуты, останавливаем тест
                _ScreenCapture_Capture($path & @HOUR & @MIN & @SEC & '.jpg') ;делаем скрин
                ControlClick('Processing...', '', '[CLASS:Button; INSTANCE:2]'); останавливаем обработку
                SetError(1)
                ExitLoop
            EndIf
        WEnd
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:17]');clean all
    EndIf
WEnd


Запаковка.au3:
Код:
#include <ScreenCapture.au3>
Local $path = 'D:\djvu\123\'
Local $folder, $count, $i, $s1 = 250, $s2 = 100
Run('DjvuOCR.exe')
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]')
Sleep($s1)
$search1 = FileFindFirstFile($path & '*.*')
While 1
    $loop = 0
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:29]');load decoder project
        WinWait('Select DECODER project', '')
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder);выбираем папку проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $folder);выбираем файл проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:3]', $path & $folder);выбираем папку fine reader
        Sleep($s1)
        If ControlCommand('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', "IsEnabled") Then ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', $path & $folder) ;Save OCR layers as TXT files
        Sleep($s1)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:25]');тест проекта
        Sleep($s1)
        While WinExists('Processing...', '')
            $loop += 1
            If ControlCommand('Processing...', '', '[CLASS:Button; INSTANCE:1]', "IsEnabled") Then ; если активна кнопка Выход, значит ошибка
                $pos = WinGetPos('Processing...', '')
                _ScreenCapture_Capture($path  & @HOUR & @MIN & @SEC & '.jpg', $pos[0], $pos[1], $pos[0] + $pos[2], $pos[1] + $pos[3]) ;делаем скрин
                ControlClick('Processing...', '', '[CLASS:Button; INSTANCE:1]') ; нажимаем выход
                SetError(1)
            EndIf
            Sleep($s1)
            If $loop >= $s1 Then; если прошло больше минуты, останавливаем тест
                _ScreenCapture_Capture($path & @HOUR & @MIN & @SEC & '.jpg') ;делаем скрин
                ControlClick('Processing...', '', '[CLASS:Button; INSTANCE:2]'); останавливаем обработку
                SetError(1)
                ExitLoop
            EndIf
        WEnd
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        If Not @error Then ; если не было ошибок, и всемя теста не превышено - работа
            $count = UBound(StringRegExp(FileRead($path & $folder & '\' & $folder & '.DPRJ'), 'file=', 3));получаем количество файлов в проекте
            ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:26]');жмем progress
            For $i = 1 To $count
                Sleep($s2)
                WinWaitClose('Processing...')
                Sleep($s2)
                WinWaitClose('Processing DjVu files') ;ждем закрытия окна обработки файлов
            Next
        EndIf
;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:17]');clean all
    EndIf
WEnd


Запаковщик с остановкой без скриншотов.au3:
Код:
Local $path = 'D:\djvu\123\'
Local $folder, $count, $i, $s1 = 250, $s2 = 100
Run('DjvuOCR.exe')
WinWait('[Class:CustomDlg]')
WinActivate('[Class:CustomDlg]')
ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:18]')
Sleep($s1)
$search1 = FileFindFirstFile($path & '*.*')
While 1
    $folder = FileFindNextFile($search1)
    If @error Then ExitLoop
    If @extended = 1 Then
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:29]');load decoder project
        WinWait('Select DECODER project', '')
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $path & $folder);выбираем папку проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('Select DECODER project', '', '[CLASS:Edit; INSTANCE:1]', $folder);выбираем файл проекта
        Sleep($s1)
        ControlClick('Select DECODER project', '', '[CLASS:Button; INSTANCE:2]');открыть
        Sleep($s1)
        ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:3]', $path & $folder);выбираем папку fine reader
        Sleep($s1)
        If ControlCommand('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', "IsEnabled") Then ControlSetText('[Class:CustomDlg]', '', '[CLASS:Edit; INSTANCE:4]', $path & $folder) ;Save OCR layers as TXT files
        Sleep($s1)
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:25]');тест проекта
        Sleep($s1)
        WinWaitClose('Processing...', '', 60);ждем закрытия окна теста, тут нужно определиться с мамксммумом
        If @error Then ;выход по тайм-ауту.
            ControlClick('Processing...', '', '[CLASS:Button; INSTANCE:2]'); останавливаем обработку
        Else
            $count = UBound(StringRegExp(FileRead($path & $folder & '\' & $folder & '.DPRJ'), 'file=', 3));получаем количество файлов в проекте
            ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:26]');жмем progress
            For $i = 1 To $count
                Sleep($s2)
                WinWaitClose('Processing...')
                Sleep($s2)
                WinWaitClose('Processing DjVu files') ;ждем закрытия окна обработки файлов
            Next
        EndIf
        ControlClick('[Class:CustomDlg]', '', '[CLASS:Button; INSTANCE:17]');clean all
    EndIf
WEnd

[/hide]
 
Верх