Попытка конвертировать PDF в текст бесплатно

16

Я использую OSX и хотел бы иметь возможность конвертировать PDF файлы в текст.

Я хотел бы бесплатное приложение, чтобы сделать это, так как я уверен, что они должны быть.

Грант
источник
2
Вы хотите извлечь текст из PDF-файлов, которые уже содержат текст? (то есть вы можете копировать и вставлять из них фрагменты) Или вы хотите распознать текст, содержащийся в изображении?
Алан Шутко
Помогает ли free-ocr.com ?
Тим

Ответы:

13

Вот шаги, которые я использовал для установки и использования xpdf через Homebrew.

  1. Установите зависимости Homebrew:

    xcode-select --install
    
  2. Установите Homebrew с их сайта:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. Сделайте то, что он говорит вам, чтобы завершить установку Homebrew.

  4. Убедитесь, что Homebrew счастлив и функционирует по спецификации.

    brew doctor
    
  5. Далее установите xpdf и его зависимости:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. Наконец, используйте pdftotext, пакет, входящий в комплект xpdf:

    pdftotext Some_Document.pdf Some_Document.txt
    

Первое имя файла - это существующий PDF; Второй пункт назначения. Результаты были намного лучше, чем с (по общему признанию) старой версией Adobe Acrobat. Изменить: Новые (2019) версии Adobe Acrobat показали столь же плохие результаты.

Флэш Шеридан
источник
2
Я думаю, что xquartzне нужно для инструментов консоли в xpdf. Кроме того, есть popplerразвилка, xpdfкоторая, как представляется, поддерживается гораздо активнее: github.com/scraperwiki/scraperwiki-python/issues/…
Йерун Вирт Плуимерс
6

Несколько методов.

  1. Используйте документы Google (вам потребуется аккаунт Google)

  2. Использовать Automator (требуется некоторая работа)

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

извлечь текст из PDF

или приложение из App Store, например, PDF в текст

Ruskes
источник
4

xpdf который я установил с портами:

port install xpdf

содержит:

xpdf-pdftotext

Он делает то, что вы хотите для любого файла PDF, который приходит из текстового файла (а не из изображения):

xpdf-pdftotext PDF_file text_file
Дан
источник
1
Команда, по крайней мере, установленная HomeBrew, это просто «pdftotext».
Флэш Шеридан
@FlashSheridan Могу ли я рекомендовать вам опубликовать ответ на тему "pdftotext" и как установить его с помощью homebrew? Комментарии могут быть удалены в любое время (а также не отображаются в результатах поиска).
холме
4

Текущая версия Adobe Reader (11.0.09) имеет пункт «Сохранить как другое» в меню «Файл».

Одним из вариантов является Текст .

Приложение бесплатно, и делает достойную работу, выводя текстовые файлы. Все изображения в новом документе будут потеряны в формате .txt.

странствующий незнакомец
источник
1

Я думаю, вы сможете скопировать и вставить текст в другой документ. Выделить весь текст

Откройте PDF в «Предварительном просмотре» и

  • выберите «Редактировать | Выбрать все»
  • выберите «Редактировать | Копировать»

Перейдите в другое приложение, скажите «Редактирование текста»

  • выберите «Редактировать | Вставить»

Обратите внимание, что если вы попытаетесь это сделать, и текст не вставлен, а просто пустые строки, попробуйте сначала распечатать PDF в новый PDF, например

  • В предварительном просмотре выберите «Файл | Печать»
  • В правом нижнем углу выберите «PDF | Сохранить как PDF»
  • Это экспортирует новый PDF.

Теперь попробуйте описанный выше процесс с этим новым PDF. Работал на меня!

PS: если у вас есть Microsoft Word, вы можете открыть свой PDF в слове

Брэд Паркс
источник
1
Хотя это должно работать, когда документ 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()
benwiggy
источник
Это работает из коробки (то есть - не нужно было устанавливать какие-либо библиотеки Python или что-нибудь еще!) - Это просто необработанный дамп текста, но иногда это то, что вам нужно - обратите внимание, что файл сохраняется в текущем каталоге (если выполняется из командной строки) и не выходит на стандартный вывод
Брэд Паркс
@BradParks Должен быть сохранен в той же папке, что и входной файл: он принимает путь к файлу из аргументов команды. Как ты это поставляешь?
Benwiggy
ааа ... я был в той же папке, поэтому я никогда не замечал этого - мое единственное реальное намерение состояло в том, чтобы сказать, что он не приходит на стандартный вывод и что он работает! Благодарность!
Брэд Паркс
1
Замените две строки после if pdfDocоператора на print(pdfDoc.string()).
Benwiggy
Ого, это похоже на первый раз, когда дистрибутив Apple Python оказывается полезным для чего-то !! Спасибо за ответ!!
Жереми