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

20

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

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

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

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

don.joey
источник
3
Я сам еще не пробовал, но видел, как этот проект рекомендовали в прошлом.
Glutanimate
Я только что написал pdf2searchablepdf. Это зависит от tesseract. Это работает хорошо. Супер прост в использовании. Посмотреть здесь. askubuntu.com/a/1187881/327339
Габриэль Стейплс

Ответы:

12

Ubuntu <16.04

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

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

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

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

Наконец, вы можете распознать ваш 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 стал доступен через apt. Просто беги

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

Наконец, вы можете распознать ваш 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 .

don.joey
источник
Примите ли вы свой ответ, чтобы решить его? (Чтобы он не попал в список без ответа)
Зарегистрированный пользователь
Только sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFдля Ubuntu 16.04
Мартин Тома
1
Для Ubuntu 16.10 и выше, вы можете просто сделать sudo apt install ocrmypdf.
эндолит
6

@ don.joey ответил с помощью сценария ocrmypdf . Однако его можно установить прямо сейчас (с 16.10 и далее).

sudo apt install ocrmypdf

Затем вы должны установить Тессеракт вам язык.

Чтобы увидеть, какие языки уже есть в вашей системе, введите:

tesseract --list-langs

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

sudo apt install tesseract-ocr-spa

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

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

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

Ludenticus
источник
Есть мой upvote, сэр!
don.joey
4

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

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

pdfsandwich scanned_file.pdf

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

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я разработчик pdfsandwichи, следовательно, сильно предвзятый.

Тобиас Эльзе
источник
Звучит здорово, но почему pdfsandwich версии 0.1.4, установленный с помощью apt-get, конвертирует каждый символ в черный прямоугольник для меня в Ubuntu 16.04?
Valentas
1
Трудно ответить без дальнейших подробностей. Прежде всего, я рекомендую использовать более свежую версию инструмента. Текущая версия 0.1.6. Вы можете найти пакеты Deb для Ubuntu на сайте. Во-вторых, если это не помогает, вы можете использовать опцию -verbose, чтобы получить более подробную информацию, и использовать эти данные для отправки отчета об ошибке.
Тобиас Эльзе
пара вопросов для меня. convert: попытка выполнить операцию, не разрешенную политикой безопасности `PDF '@ error / constitute.c / IsCoderAuthorized / 408. поэтому мне пришлось установить imagemagick из источника, загруженного с imagemagick.org/script/install-source.php, а затем я получил ошибку при загрузке общих библиотек: libMagickCore-7.Q16HDRI.so.6: не могу открыть файл общего объекта: «Нет такого файл или каталог "", и это решение работало с помощью команды "sudo ldconfig / usr / local / lib". imagemagick версия 7.0.8-56, полученная с помощью "identifier -version".
Pierrely
возможно, стоит добавить эти утилиты, если вы планируете манипулировать или обрезать PDF-файлы. 1. pdfshuffler для разделения левой и правой страниц (из 2-х сторонних оригиналов) 2. pdftk pdf chain Используйте pdftk (как файл jar), чтобы разделить файл на четные и нечетные страницы по отдельности: 4 для обрезки страниц pdfquench - мне понадобился также gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich сработал, уменьшил размер файла в 10 раз. Благодарю. Ubuntu 19.04 также pdfsam для разделения и слияния, запускается как файл jar Java после загрузки
Pierrely
0

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())

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

AndreR
источник
0

ОС: 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, то вам нужно будет установить соответствующий языковой пакет. Например, для португальского языка вам нужно сделать:

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.

evaristegd
источник
0

У меня была такая же проблема, поэтому я написал это на выходных. Дать ему шанс; это прекрасно работает! Это простая обертка вокруг 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, так как в настоящее время она написана полностью на bash.

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

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Как превратить PDF в PDF с возможностью поиска по тексту?
  3. Какое самое лучшее и простое решение для распознавания?
  4. Извлечение встроенных изображений из PDF
  5. pdfsandwich : Альтернативная программная оболочка, которую я только что обнаружил, это тоже стоит проверить! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [как превратить PDF в кучу изображений с помощью pdftoppm] Извлечение встроенных изображений из PDF
Габриэль Стейплс
источник