Систематизация архива е-книг (Q)

А вот, я извиняюсь, вопрос.

Есть большой архив электрической литературы, который возник по той простой причине, что нужные книжки почему-то оказываются в многогигабайтных архивах в торрентах, а не отдельными файлами (либо даже можно тянуть пофайлово, но названия файлов такие, что не разобраться без поллитры).

Форматы обычные для таких помоек: pdf (зачастую графический, а не текстовый), djvu, немножко офиса, немножко постскрипта. Все rar/zip-ы развернуты, время на это потратил уже. Десятки тысяч текстов, включая туда и все выпуски журнала "Мурзилка" (условно, Мурзилки как раз нет), первые сотни гигабайт на диске.

Хочется: распознать из каждой книжки первые 2-3 килобайта текста с каким-то качеством (можно - с плохим). Только автоматически, не открывая каждую в Файнридере. Распознавать целиком - слишком долго и не нужно, думаю что 99.9% этого надо просто стереть (или похранить, что то же самое).

Может быть есть какие-то средства automation оного FineReader (или каких-то других разумных OCR)? Куда копать?

(получив первые страницы текста, я уже знаю что с этим делать разумного: тематику постараюсь распознать, поисковый индекс по этому сделаю).

Comments

Cunei Form нынче открыла исходники. Сам не читал:)

в качестве вспомогательной идеи, посоветую сперва отрезать первые страницы в отдельные файлы, затем распознавать, чтобы распознавалка не мучилась открытием.

.pdf-ы в command line умеет резать pdftk, дежавю - не знаю.

command line вроде принимает бесплатный cuneiform, распространяется в том числе и в исходных текстах http://www.cuneiform.ru/downloads/index.html

А ворды кто умеет резать?
Я вот готов потратить на задачу еще день собственного участия (чтобы потом в эту печку скармливать уже автоматически) и пока мне не кажется, что оно за это время решится....

Word и умеет. Через OLE automation. Ну или catdoc filename.doc |head -100.

так текстовые форматы (ворды, компилированный видовс-справки и т.п.), по идее, индексаторы должны уметь напрямую индексировать прямо скопом на автопилоте?

ясно что ворды умеет резать сам ворд, там же целый визуальный бейсик для приложений встроен. ну или виндовс scripting - ворд же регистрирует свое COM-добро, можно воспользоваться.

в качестве другой креативной идеи - можно на автопилоте отконвертировать все старые ворды в новые xml-ные ворды или хml-ные опен офисы, и индексировать их.

но имхо с зоопарком форматов за день не управишься, каждому графическому (а если индексатор офису не обучен - то и текстовому тож) формату - свою автоматизацию надо лепить :-)

Файнридер ценен тем, что все нужные графические форматы уже понимает.

Ему бы команду "остановиться, обработав 10 страниц" (а лучше - 4 килобайта) и сохранить результат в текст - и все. Бы.

А вот точно первые 4к, а не скажем с 8-го по 12-й? Там всякая ересь типа введений не помешает?

Зато там есть название и аннотация, этого в самый раз (но неизвестно, на какой странице они начинаются)

Недавно я читал в компьютерре интервью с начальником ABBYY. Его там спрашивали "куда дели из файнридера командно-строчную распознавалку" (то есть до версии 8 включительно она там была). Он отвечал "это де, для корпоративных применений, поэтому мы её только в enterprise edition оставили).
А вообще может тебя качество ныне опенсурсного CuneiForm устроит? Там командно-строчную распознавалку никто не отменял.

Ну во-первых, я не пробовал. Для получения "тегов" - да, скорее устроит, качество не очень нужно.

Но у них даже списка поддерживаемых форматов не написано на сайте, я опечален.

tiff оно точно поддерживает. А на предмет всего остального есть ghostscript, ddjvu и netpbm.

А может просто вручную имя для каждой книги нормальное дать. Тогда информацию для индекса уже из интернета можно найти.

Их, типа, двадцать тысяч или около того.

Есть FineReader Scripting Edition, которым можно пользоваться через Automation интерфейс

А чем можно тематику определить?
Если нет оперсорцевых решений, хотябы про принципы почитать. Интересно.

Ну я пользуюсь вот этим вот: http://www.ashmanov.com/tech/semantic/

Несколько лет назад знал один метод -- выложить в сеть и... скормить гуглу. :-)
А по итогам прочитать закешированное как текст.

Жанр можно получить методами Байеса: все встреченные в тексте словосочетания (с учетом и без анализа падежей) сортируются и получают рейтинг встречаемости.
Далее, требуются "комплекты" рейтингов для эталонных текстов, с ними будут сравниваться заголовки, цитаты, прямая речь и повествование каждой страницы документа.

Результат - набор данных, таких как:

  • интервалы (в строках) между заголовками и прочими атрибутами текста,
  • встречаемость словосочетаний внутри каждого из атрибутов

При этом, необходимо обращать внимание на содержимое пары верхних строк и пары нижних. В них могут быть название, автор, издание.

Полностью разобранный текст необходимо повторно превратить в текст без атрибутов, такой, как после lynx -dump, плоский, с неразобранным по столбцам текстом.

По межсимвольным интервалам (средней длине подстрок), определяем столбцы текста, восстанавливаем его в неразорванные строки. Логичным способом удаляем пробелы между символами (бывает такое, что после каждой буквы по одному).

В результате будем иметь чистый текст для индексирования/реконструкции документа и атрибуты и вектор рейтингов (не вероятностей!) для каждой страницы текста. Далее эти вектора обращаем в график, по которому отсекаем страницы с иллюстрациями и рекламой... Кажется, меня понесло ;-)

Далее, загоняем знание о документе, эти вектора, в базу знаний (набор векторов - матрица), ставим оценку анализу каждого столбца, делаем оценку работе в целом, для каждого документа.

Делаем пирамиду из номеров документов - ранее добавленные документы влияют на оценку добавленных позднее. Связью является доверие оценке.

В 90% случаев, связь будет положительной.

Так же, можно поделить документ на статьи и сделать пирамиду связей для отдельных статей.

Кто-нибудь еще хочет этим заниматься? :-)