Как из ПДФ вытащить текст?

Если вы хотите скопировать текст из файла PDF для добавления в документ Word, вставить формулу в электронную таблицу Excel или вставить в слайды PowerPoint для презентации, это можно сделать так же просто, как с помощью функции «Копировать и вставить».

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

Как скопировать текст из PDF

Прежде чем вы сможете скопировать текст из PDF в другое приложение, вы должны подтвердить, что в нем нет настроек безопасности, которые запрещают копирование, иначе вы не сможете ничего копировать. На это может указывать функция копирования, выделенная серым цветом или затемненная в Reader.

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

  • Для этого щелкните документ правой кнопкой мыши и выберите » Свойства документа».
  • Перейдите на вкладку » Безопасность » и просмотрите сводку ограничений по документам, чтобы узнать, разрешено или нет копирование содержимого.
  • Откройте PDF-файл в любом приложении для чтения, а затем скопируйте нужный текст одним из следующих способов.

Существует несколько способов копирования текста из файла PDF, которые мы рассмотрим в этом руководстве.

Функция копирования и вставки

Это де-факто метод копирования текста из большинства документов или файлов, а не только из PDF-файлов. Вы можете использовать сочетание клавиш CTRL + C, чтобы скопировать нужный текст, а затем использовать CTRL + V, чтобы вставить его в другой документ.

Если вы используете Mac, нажмите Command-C, чтобы скопировать текст, и Command-V, чтобы вставить содержимое буфера обмена в текущий документ или приложение.

Кроме того, вы можете использовать правую кнопку мыши или сенсорной панели и выбрать инструмент «Выбор» .

Выделите текст, который вы хотите скопировать в документе PDF, перетащив мышью, чтобы выделить часть, которую вы хотите скопировать, щелкните правой кнопкой мыши выделенный текст и выберите » Копировать» .

Вы также можете перейти на вкладку меню и нажать » Правка»> «Копировать» . После того, как он скопирован, перейдите к документу, в который вы хотите вставить скопированный текст, щелкните правой кнопкой мыши место, в котором вы хотите разместить его, и выберите «Вставить» или нажмите » Правка»> «Вставить» .

Инструмент для создания снимков или снимков экрана

Инструмент «Снимок» в программе чтения PDF-файлов поможет вам выбрать нужный текст в виде скриншота или рисунка, а затем вставить его в другой документ, не затрагивая форматирование. Если вы выберете этот метод, вы получите именно ту часть текста, которая вам нужна, но она не будет редактируемой.

Для этого откройте документ PDF, нажмите «Правка» > «Сделать снимок».

В качестве альтернативы, выберите строку заголовка окна PDF и нажмите Alt + PrtScn на клавиатуре, чтобы сделать снимок экрана, а затем обрезать на основе нужной части.

Если вы используете Mac, нажмите Ctrl + Shift + 4 и используйте курсор на экране, чтобы перетащить и выбрать текст, который вы хотите захватить.

Интернет PDF Reader

Вы можете скопировать текст из PDF-документа в браузере или онлайн-ридере.

Для этого откройте PDF-файл в браузере, щелкнув правой кнопкой мыши файл и выбрав » Открыть с помощью»> (выберите браузер) или перетащите его в открытое окно браузера.

Выберите текст, который вы хотите. Нажмите CTRL + C, чтобы скопировать текст и вставить его в другой документ, используя CTRL + V. Вы также можете щелкнуть правой кнопкой мыши по сенсорной панели и выбрать » Копировать» , а затем снова щелкнуть правой кнопкой мыши другой документ и выбрать » Вставить» .

Программное обеспечение для извлечения PDF

Сторонний инструмент для извлечения PDF также может помочь вам извлечь текст для использования в другом приложении, таком как Word, презентация PowerPoint или программное обеспечение для настольных издательских систем.

Вы можете использовать такой инструмент, как ExtractPDF, загрузить свой PDF и нажать Пуск. Инструмент будет извлекать изображения, текст или даже шрифты, если вы хотите, после чего вы можете скопировать то, что вы хотите из извлеченного контента и вставить его в другое приложение.

Существует множество сторонних инструментов извлечения файлов PDF, которые преобразуют их в HTML, сохраняя при этом макет страницы. Они также извлекают и преобразуют содержимое документа PDF в форматы векторной графики, которые можно использовать в других приложениях.

PDF Converter

Конвертер PDF позволяет вам конвертировать документ PDF в редактируемый документ , после чего вы можете скопировать свой текст и использовать его в другом приложении.

Одним из популярных PDF-конвертеров является SmallPDF, потому что это онлайн-инструмент, поэтому он не требует установки и прост в использовании. Чтобы использовать его, откройте SmallPDF в браузере, выберите формат вывода, например, PDF в Word .

Нажмите «Выбрать файл», чтобы загрузить PDF-файл, который вы хотите преобразовать.

Нажмите Загрузить, чтобы сохранить преобразованный файл на вашем устройстве. Затем откройте преобразованный документ Word и скопируйте нужный текст.

Инструмент OCR

Инструмент оптического распознавания символов (OCR) позволяет преобразовывать файл PDF в редактируемый документ Word, копировать текст из файлов PDF и сканированные изображения в редактируемые текстовые форматы.

Это особенно полезно, если вы получили отсканированный документ в формате PDF, поскольку он мгновенно превращает такие файлы в редактируемые PDF-файлы с пользовательскими шрифтами и редактируемым текстом, которые выглядят так же, как и в исходном документе.

Adobe Acrobat работает как текстовый конвертер с OCR, так как он автоматически извлекает текст из отсканированных изображений или бумажных документов и преобразует их в PDF-файлы.

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

Примечание. Для выполнения этих действий необходим Adobe Acrobat, а не Adobe Reader, поскольку последний предназначен только для просмотра PDF-файлов и не имеет инструмента OCR.

Чтобы использовать собственный инструмент OCR в Adobe Acrobat, откройте PDF-файл, содержащий отсканированный текст или изображение, в Acrobat для ПК или Mac и нажмите » Редактировать PDF» .

Acrobat автоматически применяет OCR к PDF и преобразует его в полностью редактируемую копию. Выделите текст, который хотите скопировать, и нажмите » Правка»> «Копировать» , а затем вставьте его в другое приложение.

Вы можете нажать Файл> Сохранить как, чтобы сохранить редактируемый документ для последующего использования.

Либо откройте отсканированный документ или изображение, с которым вы хотите использовать устройство чтения OCR, нажмите » Инструменты» в верхней правой части панели инструментов и выберите » Распознать текст»> «В этом файле» .

Вы увидите всплывающее окно с текущими общими настройками, такими как язык распознавания текста, стиль вывода PDF и разрешение. Нажмите OK, чтобы текст был распознан.

Если вы хотите изменить настройки, нажмите кнопку » Изменить» , а затем нажмите кнопку «ОК» после завершения.

Как только текст распознан на отсканированной странице, вы можете выбрать и скопировать нужный текст с обнаруженным форматированием, хотя это не так точно, как распознавание текста.

Если у вас есть только Adobe Reader и вы не хотите получать копию Acrobat, есть бесплатные инструменты OCR, такие как OCR OneNote для ПК, который можно использовать бесплатно, или библиотека Tesseract OCR для Mac.

Примечание. Если у вас есть Adobe Acrobat, вы можете распознать несколько документов одновременно. Просто откройте любой документ в Acrobat, нажмите » Распознать текст» на боковой панели » Инструменты» и выберите «В нескольких файлах». Перетащите PDF-файлы, которые вы хотите, в OCR, и Acrobat распознает текст для вас.

IText: вытаскиваем текст из PDF


Доброе время суток, хабровчане!
Недавно столкнулся с задачей: научиться вытаскивать текст из PDF запоминая его позицию на странице. И, конечно же, в несложной поначалу задаче вылезли подводные камни. Как же в итоге получилось это решить? Ответ под катом.

Немного о PDF формате

PDF (Portable Document Format) — популярный межплатформенный формат документов, использующий язык PostScript. Основное его предназначение — корректное отображение на различных операционных системах и т. д.
Первой идеей было просто самому изобрести велосипед а именно, вскрыть pdf и выдернуть оттуда текст. И, попытавшись это сделать, я понял, что внутри pdf устроен не очень приятно и выявил несколько фактов, серьезно усложняющих задачу:

  • слова могут быть нелогично разбиты на части. Например отображение слова «алгоритмы» записано, грубо говоря, тремя частями: отобрази «алг» «орит» «мы»
  • строчки в тексте и слова в строчках могут отображаться совсем не в том порядке, как мы привыкли читать
  • в одних документах пробелы задаются явно (т.е. есть команды содержащие ‘ ‘), в других — они образуются при помощи того, что соседние слова отображаются друг от друга на некотором расстоянии

Потому желание парсить pdf самостоятельно пропало моментально.
p.s. от всего этого невольно вспомнилась цитата Тем, кто любит колбасу и уважает закон, лучше не видеть, как делается то и другое
Затем, поигравшись с несколькими библиотеками (pdfminer, pdfbox), я решил остановиться на iText.

Немного про iText

iText: библиотека на Java, предназначенная для работы с pdf (также есть версия на C#: iTextSharp). Начиная с версии 5.0.0 свободно распространяется по лицензии AGPL (обязывающая предоставлять пользователям возможность получения исходного кода), но также есть и коммерческая версия. Снабжена неплохой документацией. А тем, кто хочет ознакомиться с библиотекой по-лучше, советую книгу от создателя библиотеки «iText in Action».

Простой способ вытащить текст из PDF

Вот этот код неплохо извлекает текст из PDF, но не предоставляет какой-либо информации, о его расположении в документе.
public class SimpleTextExtractor { public static void main(String args) throws IOException { // считаем, что программе передается один аргумент — имя файла PdfReader reader = new PdfReader(args); // не забываем, что нумерация страниц в PDF начинается с единицы. for (int i = 1; i <= reader.getNumberOfPages(); ++i) { TextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); String text = PdfTextExtractor.getTextFromPage(reader, i, strategy); System.out.println(text); } // убираем за собой reader.close(); } }
А теперь разберемся во всем по порядку.
PdfReader — класс, читающий PDF. Умеет конструироваться не только от имени файла, но и от InputStream, Url или RandomAccessFileOrArray.

TextExtractionStrategy — интерфейс, определяющий стратегию извлечения текста. Подробнее о нем — ниже.
SimpleTextExtractionStrategy — класс, реализующий TextExtractionStrategy. Несмотря на название, очень неплохо вытаскивает текст из PDF (справляется с переменчивой структурой PDF, а именно, если сначала текст идет в двух колонках, а затем переключается на обычное написание во всю страницу.
PdfTextExtractor — статический класс, содержащий лишь 2 метода getTextFromPage с одной разницей — указываем мы явно стратегию извлечения текста или нет.

Вытаскиваем текст, запоминая координаты

Для этого нам нужно обратить внимание на интерфейс TextExtractionStrategy. А именно на эти две функции:
public void renderText(TextRenderInfo renderInfo) — при вызове getTextFromPage эта функция вызывается при каждой команде, отображающей текст. В TextRenderInfo хранится вся необходимая информация: текст, шрифт, координаты.
public string GetResultantText() — эта функция вызывается перед окончанием getTextFromPage и ее результат вернется пользователю.
В качестве образца, научимся простейшим образом вытаскивать пары вида <y-координата строки, текст строки> для каждой строки на странице.
Реализация интерфейса:
public class TextExtractionStrategyImpl implements TextExtractionStrategy { private TreeMap<Float, TreeMap<Float, String>> textMap; public TextExtractionStrategyImpl() { // reverseOrder используется потому что координата y на странице идет снизу вверх textMap = new TreeMap<Float, TreeMap<Float, String>>(Collections.reverseOrder()); } @Override public String getResultantText() { StringBuilder stringBuilder = new StringBuilder(); // итерируемся по строкам for (Map.Entry<Float, TreeMap<Float, String>> stringMap: textMap.entrySet()) { // итерируемся по частям внутри строки for (Map.Entry<Float, String> entry: stringMap.getValue().entrySet()) { stringBuilder.append(entry.getValue()); } stringBuilder.append(‘\n’); } return stringBuilder.toString(); } @Override public void beginTextBlock() {} @Override public void renderText(TextRenderInfo renderInfo) { // вытаскиваем координаты Float x = renderInfo.getBaseline().getStartPoint().get(Vector.I1); Float y = renderInfo.getBaseline().getStartPoint().get(Vector.I2); // если до этого мы не добавляли элементы из этой строчки файла. if (!textMap.containsKey(y)) { textMap.put(y, new TreeMap<Float, String>()); } textMap.get(y).put(x, renderInfo.getText()); } @Override public void endTextBlock() {} @Override public void renderImage(ImageRenderInfo imageRenderInfo) {} // метод для извлечения строчек с их y-координатой ArrayList<Pair<Float, String>> getStringsWithCoordinates() { ArrayList<Pair<Float, String>> result = new ArrayList<Pair<Float, String>>(); for (Map.Entry<Float, TreeMap<Float, String>> stringMap: textMap.entrySet()) { StringBuilder stringBuilder = new StringBuilder(); for (Map.Entry<Float, String> entry: stringMap.getValue().entrySet()) { stringBuilder.append(entry.getValue()); } result.add(new Pair<Float, String>(stringMap.getKey(), stringBuilder.toString())); } return result; } }

А основной код выглядит так:
public class TextExtractor { public static void main(String args) throws IOException { PdfReader reader = new PdfReader(args); for (int i = 1; i <= reader.getNumberOfPages(); ++i) { TextExtractionStrategyImpl strategy = new TextExtractionStrategyImpl(); // вызываем, чтобы наша реализация стратегия получила информацию о тексте на странице PdfTextExtractor.getTextFromPage(reader, i, strategy); System.out.println(«Page : » + i); for (Pair<Float, String> pair: strategy.getStringsWithCoordinates()) { System.out.println(pair.getKey().toString() + » » + pair.getValue()); } } reader.close(); } }

Примечания

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

Сделать это можно с помощью MS Office и стандартных программ для просмотра pdf — документов. У вас должна быть установлена полная версия MS Office, в папке принтеров должен присутствовать Microsoft Office Document Image Writer. В данной статье описано использование MS Office 2003. Начиная с Microsoft Office 2010, это приложение удалено из пакета. Существует утилита SharePoint Designer 2007, установив которую, вы добавите MODI в состав Microsoft Office 2010.
Загрузить SharePoint Designer 2007

Будем использовать программу Foxit Reader. Она более удобна и менее тяжеловесна, чем Adobe Reader. Скачать программу можно с сайта разработчика http://www.foxitsoftware.com/downloads/ Выберите язык Russian, вашу OS
и нажмите кнопку Download.
Запустите Foxit Reader и откройте в нем pdf-документ. Просматривая документ, выберите страницы, которые вы хотите извлечь и сохранить отдельно. Отправьте выбранные страницы на печать Файл -> Печать (File -> Print). В качестве устройства печати (Printer) в строке Name из выпадающего списка выберите Microsoft Office Document Image Writer. Установите флажок Страницы (Pages) и укажите через тире начальную и конечную страницы печати, и нажмите Ok.

Будет сформирован документ в формате .mdi. Откроем его в программе Microsoft Office Document Imaging, для чего просто щелкните по названию файла. Если редактирование документа не требуется, то можно его сразу отправить на печать. Если надо редактировать, удалить или дополнить текст — тогда читайте дальше.

Обычно документ содержит рисунки, их надо сохранить отдельно. Левой кнопкой мыши выделите картинку, проведя указатель мышки по диагонали. Щелкните правой кнопкой мыши по изображению и в меню выберите Копировать изображение. Скопированное изображение можно вставить в PAINT и сохранить. По умолчанию сохранение в формате bmp, если хотите получить файлы в 10-20 раз меньшего размера, выберите jpeg. Качество картинки, конечно, немного пострадает. Запомните место, где сохранили картинку. Таким же образом скопируйте и сохраните другие картинки.

Теперь в главном меню выберите Сервис, а в нем пункт Отправить текст в MS Word. В окне Отправка текста в MS Word отметьте флажок Все страницы.

Выдается предупреждение о том, что будет выполнено оптическое распознавание текста.

Запустится MS Word и в окне появится распознанный текст.

Проверьте его и исправьте ошибки распознавания. Остается вставить в текст сохраненные вами картинки. Поставьте курсор в нужное место текста и в главном меню MS Word выберите Вставка -> Рисунок -> Из файла… Вставленный рисунок обычно большего размера, чем это нужно.

Щелкните по рисунку, картинка выделится рамкой в виде тонкой черной линии. Подведите курсор мыши к правому нижнему углу рамки. Появится двунаправленная стрелка. Нажмите левую кнопку мыши и не отпуская ее, уменьшите изображение до нужных размеров. Также вставьте и другие картинки.

Если вы перед этим уже уменьшили размеры картинок в каком-либо графическом редакторе, то просто вставьте их в текст. Теперь сохраните полученный документ в формате MS Word. В меню Файл выберите пункт Сохранить как… В окне Сохранение документа из выпадающего списка выберите тип файла — Документ Word, введите имя файла и нажмите Сохранить.

Сохраненный документ Word легко перевести в формат pdf с помощью бесплатного офисного пакета Libre Office. Скачайте и установите свободный пакет Libre Office. Откройте полученный вами документ Word в Libre Office Writer. В меню Файл выберите Экспорт в PDF… В окне Параметры PDF на вкладке Общие отметьте все или только необходимые страницы и нажмите Экспорт. Остается ввести имя файла PDF и нажать кнопку Сохранить.

Новые версии Microsoft Office 2010 и новее позволяют сохранять документ в формате PDF. Если у вас Microsoft Office 2007, то можно скачать и установить утилиту SaveAsPDFandXPS.exe, которая добавит в MS Office 2007 возможность сохранения в формате PDF.

В Microsoft Office 2007 утилита Microsoft Office Document Imaging не запущена по умолчанию. Как её запустить, читайте . В Foxit Reader сделайте снимок pdf-страницы, вставьте в Paint и сохраните картинку в формате .tif (.tiff). Запустите Microsoft Office Document Imaging и откройте tif-файл. Распознайте картинку и сохраните в MS Word. У меня выскакивает ошибка при переключении в Word. Тогда откройте диспетчер задач (Ctrl+Alt+Del) и попробуйте пару раз вручную переключиться. После этого текст вставляется в документ Word и его можно редактировать или сохранить.
Хотя можно и не мучиться так. Современные версии ABBYY FineReader позволяют изображение или pdf- файл конвертировать в MS Word.

В FineReader идем Файл ► Открыть PDF или изображение. Включится распознавание изображения. Если после распознавания появится окно с сообщением, что неверно выбрано разрешение, тогда щелкаем по ссылке Открыть редактор изображений. В правой колонке редактора щелкните Определить оптимальное разрешение и затем щелкаем Применить. Вверху окна щелкаем Выйти из редактора изображений. В верхнем меню выбираем Документ ► Распознать документ. После распознавания в меню выбираем Сохранить ► Передать в MS Word. Распознанный документ откроется в MS Word. Если междустрочный интервал очень большой, то его можно уменьшить. На вкладке Главная щелкаем по значку Междустрочный интервал. Выделяем текст и задаем нужное значение интервала, можно задать дробное, например 0.7.
Чтобы текст разместился на одной странице, как в оригинале, можно поэкспериментировать, выбрав другой шрифт или его размер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *