Как превратить PDF в PDF с возможностью поиска по тексту?

У меня есть несколько отсканированных документов в формате PDF, и я хочу иметь возможность искать их. Как я могу это сделать?

По сути, я должен OCR PDF, а затем смешать извлеченный текст обратно в новый PDF. Я безуспешно пробовал ряд различных решений (в том числе найденных в Добавление информации о распознавании в PDF ).

  1. pdfocr (что дает мне эту проблему: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (о котором центр программного обеспечения говорит, что это плохой пакет, и я не должен его устанавливать)
  3. OCRfeeder (в центре программного обеспечения) хорошо экспортирует в odt, но не реагирует при экспорте в pdf ,
  4. Gscan2pdf экспортирует полностью черное (но доступное для поиска) изображение, как сообщалось в этом обсуждении .
  5. Я не думаю, что средство просмотра Pdfxchange может обрабатывать файлы ocr «на лету» для файлов размером более 500 страниц.

Есть ли программный пакет, о котором я не знаю? Или скрипт, который это делает?

19
задан 13 April 2017 в 15:24

6 ответов

Ubuntu <16.04

После комментария Glutanimate я нашел рабочее решение. Это - сценарий OCRmyPDF.

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

Если Вы получаете сообщение, говоря, что необходимо установить параллель GNU. Это может быть сделано (после https://askubuntu.com/a/298598/115155) с (вторая строка является дополнительной и зависит от Вашей разновидности и версии):

sudo apt-get install parallel
sudo rm /etc/parallel/config

Наконец Вы можете OCR Ваш PDF с командой:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

Если кажется, что команда безразлична, можно увеличить многословие с помощью -v флаг (который может использоваться инкрементно как -vv или -vvv). Могло бы быть лучше протестировать результаты сначала на более коротком PDF. Можно сократить PDF следующим образом:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16.04

С Ubuntu 16.04 OCRmyPDF стал доступным через Кв. Просто выполненный

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

Наконец Вы можете OCR Ваш PDF с командой:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

Если кажется, что команда безразлична, можно увеличить многословие с помощью -v флаг (который может использоваться инкрементно как -vv или -vvv). Могло бы быть лучше протестировать результаты сначала на более коротком PDF. Можно сократить PDF следующим образом:

pdftk A=input.pdf cat A1-5 output output.pdf

Если у Вас есть какой-либо вопрос, взглянули в новом GitHub Repo.

12
ответ дан 13 April 2017 в 15:24

pdfsandwich выполняет точно это задание. Я не знал, что существует пакет, обеспеченный в центре программного обеспечения, но я обеспечиваю Ubuntu deb пакеты для него на веб-сайте проекта (см. http://www.tobias-elze.de/pdfsandwich/ для деталей), включая в настоящее время новую версию (0.1.2), которая вряд ли будет в любом центре программного обеспечения все же.

, Если у Вас есть просканированный файл scanned_file.pdf, просто звоните

pdfsandwich scanned_file.pdf

, который генерирует файл scanned_file_ocr.pdf с распознанным текстом, добавленным к отсканированным страницам.

По сравнению с большинством существующих решений, это автоматически обнаруживает tesseract установленную версию и адаптирует ее поведение соответственно. Кроме того, это выполняет предварительную обработку отсканированных изображений до процесса OCR, таких как de-скос или удаление темных краев и т.д., которые могут значительно улучшить оптическое распознавание символов.

ПРАВОВАЯ ОГОВОРКА: я - разработчик pdfsandwich лет и поэтому в большой степени смещенный.

0
ответ дан 13 April 2017 в 15:24

OCRfeeder имеет ошибку в

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

, строка 436 должна читать:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

изменил это, и это работало на меня

0
ответ дан 13 April 2017 в 15:24
  • 1
    Если it' s " normal" диск установки ubunutu, необходимо выбрать " попробуйте, не устанавливая option". это выполнит его на перьевом диске, и это покажет Вам другой диск, который является тем, который Вы хотите разделить. Это имеет gparted, поэтому просто выполните это, удостоверьтесь, что Вы выбираете диск, затем изменяете раздел. ИЛИ, возможно, просто повторно выполните целую установку, затем выберите " что-то else" опция при переустановке. Переустановка покончит со всем старой установки, так будет уверена, что Вы хотите это прежде, чем идти этот путь. – Ralph Rönnquist 15 December 2015 в 16:21

@don.joey отвечают с сценарий ocrmypdf . Однако это может быть установлено непосредственно теперь (от 16,10 вперед).

sudo apt install ocrmypdf

Затем необходимо установить tesseract языки, в которых Вы нуждаетесь.

Для списка, какие языки уже находятся в системе введите:

tesseract --list-langs

В случае, если Вы отсутствуете один, установите его. Например,

sudo apt install tesseract-ocr-spa

Теперь можно произвести доступный для поиска PDF (чье качество будет варьироваться, в зависимости от отсканированного документа) со следующей командой

ocrmypdf -l 'spa' old.pdf new.pdf

, можно, конечно, проверить ее страницу справочника на некоторые дополнительные опции.

4
ответ дан 13 April 2017 в 15:24
  • 1
    мог u проводить по мне.. Я wud ценю Вашу справку Ralph – AAMIR KHAN 15 December 2015 в 05:39

ОС: Ubuntu 18.04

Сначала, установите tesseract-ocr с:

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

, Если Вы собираетесь использовать язык кроме английского языка с tesseract, затем необходимо будет установить соответствующий laguage пакет. Например, для португальского языка, необходимо будет сделать:

sudo apt-get install tesseract-ocr-por

Иначе Вы получите ошибку:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

, Если Вы Google "tesseract PDF" Вы, вероятно, найдете этот несколько устаревшее сообщение . Однако это дает Вам некоторые полезные подсказки. Необходимо будет сначала преобразовать Ваш .pdf файл к .tiff один. Выполненный:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

, Если, как в устаревшем сообщении, Вы забываете добавлять alpha -Off, Вы получите следующую ошибку:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

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

tesseract -l por newfile.tiff output pdf 

сгенерированный файл назовут output.pdf. Если, например, Ваш PDF будет на французском языке после установки соответствия tesseract-ocr-fra то Вы будете работать:

tesseract -l fra newfile.tiff output pdf 

И желаемый файл будет, снова, output.pdf.

0
ответ дан 7 October 2019 в 18:27

У меня была эта та же проблема, таким образом, я записал это за выходные. Дайте ему выстрел; это работает отлично! Это - простая обертка приблизительно tesseract. Это использует pdftoppm для преобразования PDF в набор файлов TIFF, затем это использует tesseract, чтобы выполнить OCR (Оптическое распознавание символов) на них и произвести доступный для поиска PDF, как произведено. Все промежуточные временные файлы автоматически удалены, когда сценарий завершается.

Исходный код: https://инструкции github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

установить & используйте pdf2searchablepdf:

Протестированный на Ubuntu 18.04 11 ноября 2019.

Установка:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

Использование:

pdf2searchablepdf mypdf.pdf

у Вас теперь будет PDF названным mypdf_searchable.pdf , который содержит распознаваемый текст!

Сделанный. Обертка не имеет никаких зависимостей от Python, как она в настоящее время пишется полностью в ударе.

Ссылки или Связанные ресурсы:

  1. PDF2SearchablePDF: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. , Как превратить PDF в текст доступный для поиска PDF?
  3. What' s лучшее, самое простое решение OCR?
  4. встроенные изображения Извлечения от PDF
  5. pdfsandwich: Альтернативная обертка программного обеспечения, которую я просто обнаружил, это стоит проверить также! http://www.tobias-elze.de/pdfsandwich/
  6. https://unix.stackexchange.com/questions/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
0
ответ дан 16 November 2019 в 12:40

Другие вопросы по тегам:

Похожие вопросы: