Им не удалось меня поймать сразу: технологию поимки стаканом сверху и бумажной снизу я раскусил быстро, прыгнул по выше, приземлился по ниже, вырвался на свободу и давай убегать. Но это был явно был не мой день: выход перегородили и пришлось разворачиваться и бежать по периметру, скрываясь в роще проводов, за железной стеной батареи и еще каких-то странных предметов. Тут то меня и сцапали — теперь уже по технологии замыкающихся стаканов. Да, нужно было сильно прыгать по центру, но что-то не получалось. Потом принесли какую-то неправильную нестеклянную банку, куда меня и посадили. На мгновение перед моими глазами промелькнул образ рыжего кота и мой хвост нервно дернулся...
Redis/RabbitMQ можно удалять?(:
Попробовали конвертор от verypdf — фейл, та жа картина. Еще ряд других — фейл, тоже самое. Фиг с ними, думаю, попробуем попросить Adobe Reader, он то точно сможет...Фейл. SumatraPdf, однако, вместо пробелов выдала ряды ?, что значило, что все таки тут что-то есть.
Ладно, раз дело явно требует ручной работы, посмотрим что есть для python по работе с pdf. Гугл сообщил о существовании pyPdf. Поковырявшись с ним результат остался тем же — пробелы. Разобраться откуда он их берет не было никакого желания — код просто..нет, раз текст к нам не идет, то мы сами за ним придем.
Из подручных распознавалок оказался tesseract, который умеет русский текст, разрабатывается ребятами из гугла, ну и вроде не должен быть совсем уж плохим. Тем более, вроде как он используется в google docs, но не уверен. Кстати, попытка воспользоваться ocr гуглодоков окончилась все тем же результатом.
Tesseract прекрасно распознал текст, но вот незадача — текст содержит и кириллицу и латиницу, а он умеет использовать только один набор данных за раз! Долгое гугленье только подтвердило этот факт. Возможно, здесь выходом является пересборка traineddata, который будет включать оба языка, но не "взлетело". Так и не понял почему, поскольку Segmentation failure не сильно информативная ошибка. Ладно, фигня война, сделаем два распознавания, будем вести чтение параллельно из двух файлов и в ключевых точках брать слово из нужного файла...Стоп! Это уже напоминает извращения(:
Надо сказать, что все оказалось гораздо проще и все проблемы от незнания — pdf содержал текст в двух кодировках: Ansi и Identity-H(CID). В последней и была вся проблема. Но когда стала известна причина проблемы, быстро нашлось и ее решение: pdfminer. Скрипт pdf2txt.py, поставляемый в комплекте с пакетом, хоть и не смог перевести cid на русский язык, но составить словарь перевода было делом 5 минут.
Мораль: иногда полезно смотреть свойства файла(: