Вопрос или проблема
В фильме Матрица персонаж Нео использует программу, которая загружает и ищет (газетные) статьи.
Инструмент имеет графический интерфейс и отображает и прокручивает документ, который он в данный момент ищет. Когда конец этого документа достигается, он загружает/показывает следующий. Этот процесс, похоже, происходит автоматически, так как Нео спит в это время.
Ближе к интерфейсу видно панель инструментов, индикатор загрузки (верхний правый угол) и область документа (которая прокручивается автоматически) с меткой статуса “Поиск…”.
Существует ли (аналогичный) инструмент?
Простой поиск по ключевым словам будет достаточен.
Инструмент должен показывать и автоматически прокручивать документ, который он в данный момент ищет. Поскольку это, вероятно, займет меньше секунды на документ, он должен замедляться немного, чтобы наблюдатели могли следить за поиском.
Бонусные очки за подсветку предложений/абзацев, которые инструмент в данный момент ищет. Еще больше бонусных очков за использование OCR.
Было бы замечательно, если бы инструмент действительно забирал документы из Интернета (например, используя Wget в фоне), но поиск локальных документов тоже подходит.
Я не хочу давать требования к формату файла, но он должен хотя бы поддерживать тип документа, который позволяет встроить изображения и/или поддерживает форматированный текст. HTML и PDF были бы отличными.
Мне не важно, на какой платформе, цена или лицензия.
Это:
- Решение на командной строке
- Работает только с текстовыми файлами
-
Работает на Linux (и, возможно, на Windows через Cygwin)
while read line; do sleep 0.2s; echo "$line" | sed -r 's/word_you_want_to_find/\x1b[31m\1\x1b[0m/g'; done < <(find . -type f -exec cat {} \; )
… сделает то, что вам нужно.
- Вы можете контролировать скорость, изменяя интервал
sleep
(я использовал 0.2 секунды). - Вы можете искать несколько слов, используя
(word1|word2|word3)
вместоword_you_want_to_find
. - Вы можете также указывать шаблоны имени файла, например, используя
find . -type f -name '*.txt' -exec cat {} \;
.
Я разработал веб-приложение, которое делает это, по сути, это веб-робот, который показывает соответствующие страницы, которые он находит во время сканирования. Вы ищете, вводя ключевые слова, задавая им вес и устанавливая минимальный балл релевантности для сайтов, которые должны показываться.
Все веб-сайты отображаются в iframe, так что вы можете полностью взаимодействовать с ними, пока продолжается поиск.
Исходный код можно найти здесь: https://github.com/spydon/fetchur
Ответ или решение
К сожалению, в настоящее время нет приложения, полностью имитирующего инструмент поиска из фильма "Матрица", который бы автоматически загружал и скроллировал документы, как это делал Нео. Однако существует несколько решений, которые можно адаптировать или использовать в сочетании для достижения аналогичного результата.
Варианты инструментов и технологий
-
Web Crawlers (веб-краулеры)
- Применение веб-краулера, такого как разработанный вами инструмент, может быть хорошим стартом. Он будет осуществлять поиск по заданным ключевым словам, загружая страницы и отображая их с возможностью взаимодействия. Использование iframe позволяет пользователю просматривать результаты поиска в реальном времени.
- Код вашего веб-приложения доступен на GitHub по ссылке. Это решение позволяет вводить ключевые слова и устанавливать минимальный уровень релевантности для отображения веб-сайтов.
-
OCR (оптическое распознавание символов)
- Если вам необходимо обрабатывать отсканированные документы или изображения, стоит рассмотреть интеграцию OCR-библиотек, таких как Tesseract. Это позволяет извлекать текст из графического контента, что расширит функционал программы.
-
Автоматизированные скрипты для поиска документов
- Приведённый пользователем командный скрипт является отличным способом автоматизации поиска в текстовых файлах. Он может быть адаптирован для поиска по различным форматам, таким как PDF и HTML, с использованием дополнительных инструментов, таких как
pdftotext
для конвертации PDF в текст. - Скрипт можно модифицировать, чтобы он выводил результаты с задержкой, позволяя пользователю следить за процессом. В этом случае, используя
sleep
, можно регулировать скорость вывода.
- Приведённый пользователем командный скрипт является отличным способом автоматизации поиска в текстовых файлах. Он может быть адаптирован для поиска по различным форматам, таким как PDF и HTML, с использованием дополнительных инструментов, таких как
Пример простого скрипта
Если вам необходимо реализовать текстовый поиск в локальных файлах с выделением ключевых слов, можно использовать следующий фрагмент Bash-скрипта:
while read line; do
sleep 0.5s
echo "$line" | sed -r 's/(ваше_ключевое_слово)/\x1b[31m\1\x1b[0m/g'
done < <(find . -type f -exec cat {} \;)
Это позволит выводить строки с задержкой в 0.5 секунды, а также выделять ключевые слова в красном цвете.
Альтернативы
Если рассматриваются графические интерфейсы, стоит обратить внимание на решения, такие как:
- Foxit PDF Reader: обладает функцией поиска текста и позволяет легко прокручивать страницы.
- Adobe Acrobat Reader: позволяет выполнять поиск по документам и обрабатывать много страниц, однако не поддерживает автоматическое скроллирование.
Заключение
Хотя в настоящее время нет полностью функционального инструмента, аналогичного тому, что вы видели в "Матрице", достижения в области веб-разработки и автоматизации позволяют создавать адаптированные решения, которые могут удовлетворить большинство ваших требований. Интеграция нескольких подходов, таких как веб-краулеры и OCR, в конечном итоге может приблизить вас к желаемому результату.