У меня было отсканировано более 17000 страниц (для архива локальной истории), которые я распаковал с помощью Tesseract в отдельные файлы TXT. Я хочу иметь возможность искать / находить каждую страницу, содержащую поисковое слово, состоящее из более чем трех строчных букв. Итак, для каждого файла TXT мне нужно:
Удалите весь мусор из текста OCR, т.е. не буквенно-цифровые символы:
jrepl "[^a-zA-Z0-9s]" "" /x /f %%G /O -
Удалите слова из 1, 2 и 3 букв:
jrepl "bw{1,3}b" "" /x /f %%G /O -
Измените все символы на нижний регистр:
jrepl "(w)" "$1.toLowerCase()" /i /j /x /f %%G /O -
Чтобы отсортировать оставшиеся слова, они должны быть на отдельных новых строках:
jrepl "s" "n" /x /f %%G /O -
Наконец, отсортируйте все уникальные слова в алфавитном порядке и создайте измененный файл TXT:
sort /UNIQUE %%G /O %%G
У меня есть командный файл, который делает это с использованием JREPL, но он очень медленный. Он работает уже более 100 ЧАСОВ, и я даже не на полпути. Есть предложения по ускорению обработки? Я использую Windows 10.
Это командный файл, который я запускаю:
Setlocal EnableDelayedExpansion
for %%G in (*.txt) do (
set old=%%G
echo !old!
@echo on
rem remove non-alphanumeric
call jrepl "[^a-zA-Z0-9s]" "" /x /f %%G /O -
rem remove 1, 2 and 3 letter words
call jrepl "bw{1,3}b" "" /x /f %%G /O -
rem all to lowercase
call jrepl "(w)" "$1.toLowerCase()" /i /j /x /f %%G /O -
rem replace spaces with new lines
call jrepl "s" "n" /x /f %%G /O -
rem reduce to unique words
sort /UNIQUE %%G /O %%G
)
pause