Я предполагаю, что вы можете без проблем копировать и вставлять текстовые фрагменты, когда ваш PDF-файл открыт в Acrobat Reader или какой-либо другой программе просмотра PDF?
Прежде чем пытаться анализировать и извлекать текст из таких файлов-монстров программно (даже если это всего 200 МБ - для простого текста в таблицах это ооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо)
- Попробуйте сначала очистить файл, повторно перегнав его.
- Попробуйте с помощью различных инструментов CLI извлечь текст в файл .txt.
Это дело нескольких минут. Написание программы Ruby для этого, безусловно, является делом часов, дней или недель (в зависимости от ваших знаний о внутреннем устройстве формата файла PDF... Я подозреваю, что у вас пока нет большого опыта в этом).
Если "2." работает, вы можете уже наполовину сделать. Если это работает, вы также знаете, что сделать это программно с помощью Ruby — задача, которую в принципе можно решить. Если "2." не работает, вы знаете, что это может быть чрезвычайно сложно достичь программно.
Очистите «Monster.pdf»:
Я предлагаю использовать Ghostscript. Вы также можете использовать Adobe Acrobat Distiller, если у вас есть к нему доступ.
gswin32c.exe ^
-o Monster-PDF-sanitized ^
-sDEVICE=pdfwrite ^
-f Monster.pdf
(Мне любопытно, насколько эта единственная команда уменьшит размер выходного PDF-файла по сравнению с входным.)
Извлечь текст из PDF:
Я предлагаю сначала попробовать pdftotext.exe
(от ребят из XPDF ). Есть и другие, немного более неудобные методы, но этот уже может сработать:
pdftotext.exe ^
-f 1 ^
-l 10 ^
-layout ^
-eol dos ^
-enc Latin1 ^
-nopgbrk ^
Monster-PDF-sanitized.pdf ^
first-10-pages-from-Monster-PDF-sanitized.txt
Это не приведет к извлечению всех страниц, а только 1-10 (для проверки концепции, чтобы увидеть, работает ли она вообще). Чтобы извлечь из каждой страницы, просто оставьте параметр -f 1 -l 10
. Возможно, вам потребуется настроить кодировку, изменив параметр на -enc ASCII7
(или UTF-8
, UCS-2
).
Если это не сработает быстрым и простым способом (поскольку, как иногда бывает, некоторый шрифт в исходном PDF-файле использует «пользовательский вектор кодирования»), вам следует задать новый вопрос, описав детали ваших выводов на данный момент. Тогда вам нужно прибегнуть к более крупным калибрам, чтобы решить проблему.
person
Kurt Pfeifle
schedule
15.09.2010