Поиск/извлечение текста

  • Автор темы Автор темы antabu
  • Дата начала Дата начала

antabu

Топикстартер
10 лет на форуме
Сообщения
15
Реакции
0
Есть журналы «Химия и Жизнь» с 02 года в pdf с текстовым слоем. Нужно сделать поиск текста в них. Проблема: Foxit Reader 2.3 вообще ничего не находит на кириллице и при копировании куска текста со страницы в блокнот вставляется «кракозябра», хотя страницы отображаются нормально. Adobe Reader 8 примерно в половине файлов находит текст и копирует нормально. Плагины к Total Commander находят и извлекают текст из большей части файлов. Пример файла, где ничего не работает и не могу определить кодировку текстового слоя:
http://www.hij.ru/EV/01_2008.zip (после распаковки).
Помогите, пожалуйста, организовать текстовый поиск в этих файлах.
 
Ответ: Поиск/извлечение текста

В этом файле то, что написано Ньютоном, копируется и находится, так? А Прагматикой -- нет. Потому что Прагматика использована с кириллицей на месте расширенной латиницы, а версталось софтом, который прощает такие анахронизмы. Afaik, ничего уже не сделаешь
 
Ответ: Поиск/извлечение текста

паллиативчик вам - результат работы PDF Transformer'a

http://kutsin.fatal.ru/01_2008(2).rar

может там что-нить текстовое наковыряете)
 
Ответ: Поиск/извлечение текста

Ну, не всё совсем уж плохо. Надо взять файл и прописать в шрифтах ресурс ToUnicode (CMap), ставящий в соответствие номеру глифа в сабсете правильный уникод. Вот, навскидку, стр.8 файла, удалил трэш из ToUnicode который был и прописал всего два индекса: для букв "н" и "о". В результате стало возможно искать слова с сочетаниями "он" и "но". Ну и т.д.
 

Вложения

  • 8.pdf
    8.pdf
    38 КБ · Просм.: 1 712
  • Спасибо
Реакции: mr.edu
Ответ: Поиск/извлечение текста

Спасибо. Трансформер работает круто, в отличие от Солидконвертера.

1998 сказал(а):
Ну, не всё совсем уж плохо. Надо взять файл и прописать в шрифтах ресурс ToUnicode (CMap), ставящий в соответствие номеру глифа в сабсете правильный уникод. Вот, навскидку, стр.8 файла, удалил трэш из ToUnicode который был и прописал всего два индекса: для букв "н" и "о". В результате стало возможно искать слова с сочетаниями "он" и "но". Ну и т.д.

Тут я мало что понял. Работать надо в Акробате? А я сдуру пытался перекодировать текст Штирлицем, потом поставил Readiris, в принципе меня устраивает качество его распознания текста, но комп старый и на обработку одного файла уходит больше часа. Наверное, придётся осваивать Акробат...
 
Ответ: Поиск/извлечение текста

вы вордовский док из сообщения #3 не скачали чтоль?
 
Ответ: Поиск/извлечение текста

antabu сказал(а):
Тут я мало что понял
ну ясно
antabu сказал(а):
Наверное, придётся осваивать Акробат...
Извините, это было из разряда моих "приколов", которые мешают всем жить. Осваивать надо чуть больше, и акробат по большому счету не причем. Если Вы не чужды любознательности и некоторой склонности к программированию, а обработать надо больше, скажем, 10ти файлов... И Вы чувствуете разницу между "аналитическим"и "вычислительным" способами решения (последний, при наличии первого, всегда а-ля "сойдет и так") (а "вычислительный" это pdftransformer и т.п.)... Алгоритм (очень формальный) несложный. Важно понимать, что формат структуры данных ("шрифт") в pdf и ОС -- разные вещи. Глифы из шрифтов Type1 "адресуются" по имени, и это немного упрощает... T1 шрифт в pdf имеет параметр Encoding -- упрощая -- (fig1) последовательность чисел (индексы) и имен. Число означает начало (под)диапазона. Сначала надо перевести "это" в "словарь" (hash): индекс -- ps-name. Это, вроде, ясно и однозначно. Соответствие ps-имен (уникодов, что требуется в конечном итоге) расширенной латиницы и кирилицы -- известно. Ну, далее дело техники: в "ToUnicode" пишется немного обработанный, согласно синтаксису этой сруктуры, hash (fig2, это исходный из Ньютона, но примерно вроде понятно), в котором в соответствие индексу ставится уникод. Вот так
 

Вложения

  • 1png.png
    1png.png
    7.4 КБ · Просм.: 2 413
  • 2.png
    2.png
    6.6 КБ · Просм.: 2 533
  • Спасибо
Реакции: mr.edu
Ответ: Поиск/извлечение текста

1998, я химик, а не программист, обычный юзер и задача стоит конкретная: минимум создать читаемые текстовые эквиваленты pdf файлов («вычислительный способ») (благодаря andrejK, 3-й пост, мне понятно) и максимум — перекодировать файлы («аналитический»), и здесь не понимаю, с чего начать, т. е. откуда взяты показанные картинки (представьте себе, что юзер не понимает, почему два файла в одной папке могут иметь одинаковое начертание имён: один — с русской «с» а другой — с латинской «c»). Файлов пока 19 штук.
Лирическое отступление. В своё время фирма CCT http://www.controlchaostech.com выпустила полный архив журнала с 65 по 04 годы на 4-х CD, защищённых от копирования Starforse 3.05. У меня эти диски есть. На каждом данные djvu и pdf файлов за 10 лет закодированы в один файл resource.dat, а для поиска используется файл *.box, где собраны извлечённые тексты. Долго пытался взломать защиту, пока понял, что проще все архивы скачать в Интернете, но не зря возился — оказалось, что боксы не защищены, и когда нашёл незащищённую версию BookViewer от ССТ — получил полную незащищённую версию архива. Ещё бы достать CCT Archive, и можно все остальные номера представить в том же формате (демо-версия не тянет).
 
Ответ: Поиск/извлечение текста

...

Не по теме:
Flame, спасибо, но все-таки я это удалил :)
 
Ответ: Поиск/извлечение текста

о, я тоже был в прошлой жизни химиком... да, видать, не судьба. А программистом не был и, увы, не являюсь. Так что... Скриншоты взяты из некоего софта podofo browser (google!). Таких редакторов несколько, но этот opensource. Общее представление о формате pdf получите из описания с оффсайта, все 1300 стр. читать необязательно. Поясню, немного, описанную выше методику (и продемонстрирую ее работоспособность). Извлекаете из pdf в текстовый файл то, что на фиг1. Преобразуете в пары "индекс - имя", начало будет такое:

2 pi
3 approxequal
4 apple
5 radical
6 Delta
7 lozenge
24 breve
25 caron

Дальше сами. Смотрите кодировку MacRoman и видите, что этим именам соответствуют десятичные номера 185,197,240,195,198,215,249,255, соответственно. По этим номерам в СР1251 находятся знаки №,Е,р,Г,Ж,Ч,щ,я. Следовательно, в ToUnicode для этого шрифта запишем:

<02> <2116>
<03> <0415>
<04> <0440>
<05> <0413>
<06> <0416>
<07> <0427>
<18> <0449>
<19> <044F>

Таким образом, к 2м буквам, которые я нашел "нечестно", добавили еще 8. Причем методом, который легко и однозначно программируется. Сохраним файл и посмотрим, что получилось (аттач). Поиском находятся все 10 букв и их сочетания. Проблема решена :)

p.s. Можно и сразу исходный ToUnicode править... Просто, так, как выше, вроде нагляднее и понятно, что откуда берется. А на практике, конечно, уникоды расширенной латиницы из MacRoman поменять на кириллические, да
 

Вложения

  • 8++.pdf
    8++.pdf
    38.6 КБ · Просм.: 1 055
Ответ: Поиск/извлечение текста

Вы уже задавали этот вопрос на форуме wincmd.ru, следовательно Вам уже знаком плагин TextSearch и конвертер pdftotext.exe. Возьмите в аттаче файлик pragm.n2u, закиньте его в папку к pdftotext.exe. Добавьте в файл xpdfrc строку nameToUnicode Путь_к_файлу\pragm.n2u и попробуйте воспользоваться плагином. Также в аттаче, для примера, мой образец файла xpdfrc и вынутый из файла 8.pdf текст. Текст "распаковывался" плагином executor.wcx, обсуждение которого Вы можете найти на том же forum.wincmd.ru
Обратите внимание, что файл pragm.n2u собъет Вам кодировку кавычек, тильд и т.п. поэтому после поисков стоит закомментировать добавленную строку в xpdfrc. Грамотнее было бы привязать данную таблицу подстановок к имени шрифта, как это возможно сделать способом unicodeToUnicode, но на скорую руку мне этого сделать не удалось.
 

Вложения

  • PDF.RAR
    PDF.RAR
    5.9 КБ · Просм.: 891
Ответ: Поиск/извлечение текста

Извиняюсь за введение в заблуждение, данный способ пригоден только для работы с файлом 8.pdf из 4-го поста. Не было полного файла во время экспериментов, с оригинальным pdf у меня фокус не прошел.
 
Ответ: Поиск/извлечение текста

Типа был свободен во второй половине дня, накропал чего-то... Хотя наш автор пропал в неизвестном направлении. Недоделал -- перекодируются только строчные буквы (надоело LUT набирать). Может никому уже не надо... Использовать, как обычно, в качестве drop target. PDF из сообщения #1 превращается в "экспортируемый" и searchable (как это сказать по-русски?). Почитал wincmd.ru, особеннно оффициальный ответ автору по поводу этих pdf -- смешно.

http://rapidshare.de/files/40811224/pdf-recode.rar.html
 
Ответ: Поиск/извлечение текста

Спасибо за беспокойство и за помощь. Просто пока осваиваю Акробат8ру да на работе сеть барахлит, а всё это хозяйство у меня там. Помощь нужна, но по мере усвоения.
 
Ответ: Поиск/извлечение текста

1998 сказал(а):
Типа был свободен во второй половине дня, накропал чего-то... Хотя наш автор пропал в неизвестном направлении. Недоделал -- перекодируются только строчные буквы (надоело LUT набирать). Может никому уже не надо... Использовать, как обычно, в качестве drop target. PDF из сообщения #1 превращается в "экспортируемый" и searchable (как это сказать по-русски?). Почитал wincmd.ru, особеннно оффициальный ответ автору по поводу этих pdf -- смешно.

http://rapidshare.com/files/156844645/pdf-recode.rar.html
Супер! pdf-recode – это именно то, что нужно! Не знаю, как мне Вас, 1998, отблагодарить.
Насколько понимаю, unicod содержит 256 знаков, а пока перекодируется 33, но поиск и цитирование, в-основном, работают. Думаю, что утилитой могут заинтересоваться и в редакции журнала, т. к., по-моему, у них пока нет поискового средства для номеров с 07 года. Может она, наверное, использоваться в TextSearch и других плагинах к коммандеру, работающих с pdf.
 
Ответ: Поиск/извлечение текста

:) Пока перекодируется 32, доделаю позднее
 
Ответ: Поиск/извлечение текста

Новая ссылка в сообщении 13. Вы бы дорогой редакции подсказали взять нормальные шрифты для верстки, ведь лет через 5-10 кроме этих кривых-косых pdf ничего может не останется. Будут сканировать с бумаги?
 
Ответ: Поиск/извлечение текста

Безмерно Вам благодарен. В редакции или не понимают проблемы, или я не с тем веду переписку (как-нибудь её сброшу Вам в личку). До 06 года архивы создавались фирмой ССТ (сообшение 8), там, вроде, тоже спецы, если судить по тому, что остальные файлы тоже проблемные по кодировке, но в них, по крайней мере, работает поиск и отображение текста плагинами к Коммандеру. Ради интереса ссылка эти файлы:
http://www.hij.ru/elektrversia.shtml
(наименьший по размеру - февральский)
Предполагаю, что вариантов кодировок только 2: тот, для которого Вы уже создали recode, и по этой ссылке.
 
Ответ: Поиск/извлечение текста

Ради интереса ссылка эти файлы:
:))) ради интереса, м-мм? Но так или иначе, звонят мне сегодня с рапидшары и говорят, что файл из сообщения 13 чудесным образом обновился и теперь обрабатывает pdf журналов за 2004 год! Мистика... Не знаю что и думать.
Предполагаю, что вариантов кодировок только 2
Если бы. Просто попались всего 2, причем решаемых (причем универсально, каждый в своем роде), а могло быть гораздо хуже -- подбирать вручную для десятков непонятно как закодированных сабсетов.

К слову, обратил внимание: в Ваших файлах как дефисы, так и переносы кодируются одинаково. Оставил для них уникод 002D (hyphen, а не 00AD, soft hyphen). В итоге поиск в словах с переносом не работает, и при извлечении текста на месте переносов остаются дефиски, но зато работает поиск для слов типа "что-то", и такие дефисы остаются где положено в извлекаемом тексте.

Стало интересно (обращаясь к широкой аудитории), проверил: в pdf из индизайна (говорят, нынче "стандарт") переносы, расставленные "алгоритмом", -- 002D, а поставленные как softhyphen -- 00AD. Со всеми последствиями, описанными в предыдущем абзаце. Сразу вопросы: 1) что думает Adobe? 2) Весьма неожиданный аргумент в "переносы а-ля softhyphen против переносов алгоритмом", не так ли, 3) а не зависит ли знак, используемый в качестве символа переноса, от модуля-расстановщика? Что там "лучше всех", bah? С ним как?