В этом сообщении готовые рабочие решения, которые 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:
Тест после распознавания без скриншотов.au3:
Проверка перед запаковкой.au3:
Запаковка.au3:
Запаковщик с остановкой без скриншотов.au3:
[/hide]
Здесь резервная копия скриптов, с помощью которой люди могут обрабатывать большие объёмы документов, чтобы найти поисковыми программами неизвестные данные для востановления или развития энергетики, ресурсосбережения, экономики, медицины и т.д.[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]