Вы хотите извлечь текст из PDF-файлов, которые уже содержат текст? (то есть вы можете копировать и вставлять из них фрагменты) Или вы хотите распознать текст, содержащийся в изображении?
Наконец, используйте pdftotext, пакет, входящий в комплект xpdf:
pdftotext Some_Document.pdf Some_Document.txt
Первое имя файла - это существующий PDF; Второй пункт назначения. Результаты были намного лучше, чем с (по общему признанию) старой версией Adobe Acrobat. Изменить: Новые (2019) версии Adobe Acrobat показали столь же плохие результаты.
Я думаю, что xquartzне нужно для инструментов консоли в xpdf. Кроме того, есть popplerразвилка, xpdfкоторая, как представляется, поддерживается гораздо активнее: github.com/scraperwiki/scraperwiki-python/issues/…
Использовать Automator (требуется некоторая работа)
Вы можете использовать Automator для создания рабочего процесса, который может извлекать текст из PDF-файлов и сохранять его как текстовый или RTF-документ.
или приложение из App Store, например, PDF в текст
Команда, по крайней мере, установленная HomeBrew, это просто «pdftotext».
Флэш Шеридан
@FlashSheridan Могу ли я рекомендовать вам опубликовать ответ на тему "pdftotext" и как установить его с помощью homebrew? Комментарии могут быть удалены в любое время (а также не отображаются в результатах поиска).
холме
4
Текущая версия Adobe Reader (11.0.09) имеет пункт «Сохранить как другое» в меню «Файл».
Одним из вариантов является Текст .
Приложение бесплатно, и делает достойную работу, выводя текстовые файлы. Все изображения в новом документе будут потеряны в формате .txt.
Я думаю, вы сможете скопировать и вставить текст в другой документ. Выделить весь текст
Откройте PDF в «Предварительном просмотре» и
выберите «Редактировать | Выбрать все»
выберите «Редактировать | Копировать»
Перейдите в другое приложение, скажите «Редактирование текста»
выберите «Редактировать | Вставить»
Обратите внимание, что если вы попытаетесь это сделать, и текст не вставлен, а просто пустые строки, попробуйте сначала распечатать PDF в новый PDF, например
В предварительном просмотре выберите «Файл | Печать»
В правом нижнем углу выберите «PDF | Сохранить как PDF»
Это экспортирует новый PDF.
Теперь попробуйте описанный выше процесс с этим новым PDF. Работал на меня!
Хотя это должно работать, когда документ PDF на самом деле содержит текстовое содержимое, он не поддерживает форматирование и в некоторых случаях создает мусорный текст вместе с тем, что считается желаемым текстом. Обратите внимание, что это может быть то же самое с другими методами, но я чувствовал, что важно отметить.
user3439894
без сомнения - не идеально, конечно, и я полностью согласен со всем, что вы сказали. Я только добавляю это здесь как вариант, который я заметил ранее, это работало на меня, ничего не устанавливая вообще ;-)
Брэд Паркс
Я также согласен с тем, что он работает в большинстве случаев, но номера страниц, подробности нижнего колонтитула, которые еще не связаны с документом, и еще хуже: БЕСКОНЕЧНАЯ прокрутка больших документов делают это неудовлетворительным решением. Если бы это было менее 5 страниц, я бы это рассмотрел, но, учитывая, что большинство таблиц, которые мне нужны, взяты из PDF-файлов с исследовательских сайтов, которые отказываются выплескивать Excel или SQL, эта опция даже не работает.
Тманок
Согласовано!
Брэд Паркс
1
Следующий скрипт Python выведет текст из документа PDF в файл .txt. (Примечание: нет никакой гарантии, что текст обязательно находится в «логическом» удобочитаемом для человека порядке из-за способа хранения данных в формате PDF.)
Сценарий создаст текстовые файлы для любых файлов PDF, предоставленных в качестве аргументов ему в командной строке (например, pdf2txt.py myPDF.pdf), или вы можете использовать в действии Automator «Выполнить сценарий оболочки», установив тип оболочки в python и передать ввод в качестве аргументов «As». , Тогда вы можете использовать его как Quick Action или DropApp.
#!/usr/bin/python
# coding: utf-8
import os, sys
from Quartz import PDFDocument
from CoreFoundation import (NSURL, NSString)
NSUTF8StringEncoding = 4
def pdf2txt():
for filename in sys.argv[1:]:
inputfile =filename.decode('utf-8')
shortName = os.path.splitext(filename)[0]
outputfile = shortName+" text.txt"
pdfURL = NSURL.fileURLWithPath_(inputfile)
pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
if pdfDoc :
pdfString = NSString.stringWithString_(pdfDoc.string())
pdfString.writeToFile_atomically_encoding_error_(outputfile, True, NSUTF8StringEncoding, None)
if __name__ == "__main__":
pdf2txt()
Это работает из коробки (то есть - не нужно было устанавливать какие-либо библиотеки Python или что-нибудь еще!) - Это просто необработанный дамп текста, но иногда это то, что вам нужно - обратите внимание, что файл сохраняется в текущем каталоге (если выполняется из командной строки) и не выходит на стандартный вывод
Брэд Паркс
@BradParks Должен быть сохранен в той же папке, что и входной файл: он принимает путь к файлу из аргументов команды. Как ты это поставляешь?
Benwiggy
ааа ... я был в той же папке, поэтому я никогда не замечал этого - мое единственное реальное намерение состояло в том, чтобы сказать, что он не приходит на стандартный вывод и что он работает! Благодарность!
Брэд Паркс
1
Замените две строки после if pdfDocоператора на print(pdfDoc.string()).
Benwiggy
Ого, это похоже на первый раз, когда дистрибутив Apple Python оказывается полезным для чего-то !! Спасибо за ответ!!
Ответы:
Вот шаги, которые я использовал для установки и использования xpdf через Homebrew.
Установите зависимости Homebrew:
Установите Homebrew с их сайта:
Сделайте то, что он говорит вам, чтобы завершить установку Homebrew.
Убедитесь, что Homebrew счастлив и функционирует по спецификации.
Далее установите xpdf и его зависимости:
Наконец, используйте pdftotext, пакет, входящий в комплект xpdf:
Первое имя файла - это существующий PDF; Второй пункт назначения. Результаты были намного лучше, чем с (по общему признанию) старой версией Adobe Acrobat. Изменить: Новые (2019) версии Adobe Acrobat показали столь же плохие результаты.
источник
xquartz
не нужно для инструментов консоли вxpdf
. Кроме того, естьpoppler
развилка,xpdf
которая, как представляется, поддерживается гораздо активнее: github.com/scraperwiki/scraperwiki-python/issues/…Несколько методов.
Используйте документы Google (вам потребуется аккаунт Google)
Использовать Automator (требуется некоторая работа)
или приложение из App Store, например, PDF в текст
источник
xpdf
который я установил с портами:содержит:
Он делает то, что вы хотите для любого файла PDF, который приходит из текстового файла (а не из изображения):
источник
Текущая версия Adobe Reader (11.0.09) имеет пункт «Сохранить как другое» в меню «Файл».
Одним из вариантов является Текст .
Приложение бесплатно, и делает достойную работу, выводя текстовые файлы. Все изображения в новом документе будут потеряны в формате .txt.
источник
Я думаю, вы сможете скопировать и вставить текст в другой документ. Выделить весь текст
Откройте PDF в «Предварительном просмотре» и
Перейдите в другое приложение, скажите «Редактирование текста»
Обратите внимание, что если вы попытаетесь это сделать, и текст не вставлен, а просто пустые строки, попробуйте сначала распечатать PDF в новый PDF, например
Теперь попробуйте описанный выше процесс с этим новым PDF. Работал на меня!
PS: если у вас есть Microsoft Word, вы можете открыть свой PDF в слове
источник
Следующий скрипт Python выведет текст из документа PDF в файл .txt. (Примечание: нет никакой гарантии, что текст обязательно находится в «логическом» удобочитаемом для человека порядке из-за способа хранения данных в формате PDF.)
Сценарий создаст текстовые файлы для любых файлов PDF, предоставленных в качестве аргументов ему в командной строке (например,
pdf2txt.py myPDF.pdf
), или вы можете использовать в действии Automator «Выполнить сценарий оболочки», установив тип оболочки в python и передать ввод в качестве аргументов «As». , Тогда вы можете использовать его как Quick Action или DropApp.источник
if pdfDoc
оператора наprint(pdfDoc.string())
.