Добавление информации OCR в PDF

28

У меня хорошее качество сканирования документа; такое сканирование в формате PDF.

Как я могу добавить информацию ocr в pdf, чтобы она стала доступной для поиска? Под поиском я подразумеваю, что целью является то, что при просмотре PDF с evince, CTRL-F фактически позволяет мне искать в содержимом PDF.

fdierre
источник
Дублирование? askubuntu.com/questions/16268/…
Якоб
4
@ Якоб, я не думаю, что это обман, мы спрашиваем разные вещи. Другой вопрос касается извлечения текста из некоторого PDF-файла (то есть создания соответствующих текстовых файлов), в то время как мой вопрос касается модификации PDF-файла, чтобы добавить информацию ocr и заставить работать функцию поиска в программе чтения PDF-файлов. Я уточню вопрос.
fdierre
Как и что вы использовали для сканирования документа?
Митч
@ Митч Я использовал свой офисный принтер / копир / сканер Ricoh Aficio MP-C2500, у которого очень хороший податчик документов. :-)
fdierre
Программное обеспечение для сканирования и / или распознавания?
Митч

Ответы:

21

pdfsandwich

Делает то, что вы хотите, и предоставляет пакеты Deb Ubuntu. Он использует tesseract в качестве движка OCR. Следующий вызов добавляет текстовый слой в ваш отсканированный PDF:

pdfsandwich scanned.pdf

Далее делается то же самое, но с другим языком (код ISO 639-2, tesseract-ocr-LANGCODEпакет загрузки ) и настройка макета:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Если вы получили какую-либо ошибку, пожалуйста, загрузите последнюю версию deb с Sourceforge .

Отказ от ответственности: я разработчик pdfsandwich и, следовательно, явно предвзятый.

Тобиас Эльзе
источник
6
Это действительно здорово, спасибо. Тем не менее, кажется, что он изменяет изображения, выглядит так, как будто над ними скрывается нечеткая маска или что-то подобное. Есть ли способ оставить изображения такими, какими они были раньше? В моем конкретном случае фильтру даже удалось убрать планку из пары дробей в некоторых уравнениях. Все остальное работает довольно хорошо, хотя ...
naught101
Пакет плохого качества: `Результаты проверки Lintian для /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: control-file-has-bad-permissions md5sums 0664! = 0644 E: pdfsandwich: control-file-has-bad-owner md5sums james / james! = root / root E: pdfsandwich: неправильный-владельца-файла-uid-или-gid usr / 1000/1000 E: pdfsandwich: неправильный-владельца-файла-uid-или-gid usr / bin / 1000 / 1000 E: pdfsandwich: неправильный-владельца-файла-uid-или-gid usr / bin / pdfsandwich ...
AB
Скачать последнюю версию deb от SF . Если в конце вы получите ошибку, это может быть связано с ghostscript (v0.1.4). Сейчас v0.1.6 использует pdfunite.
Пабло А
1
@PabloBianchi Есть ли способ ручной корректуры текста с помощью OCRed pdfsandwitch? Я делаю это с некоторыми шведскими документами, и это работает хорошо, за исключением некоторых орфографических ошибок (возможно, из-за шрифта оригинала), которые было бы легко исправить, если бы это был текстовый файл, но как я могу сделать это в полученном PDF ?
Зрайм
@zrajm вы можете использовать некоторые параметры pdfsandwich для лучшего распознавания на шаге OCR. Чтобы отредактировать скрытый текст за изображением PDF, вы можете просто отредактировать слой текстовых полей с помощью LibreOffice Draw, Inkscape или любого инструмента редактирования PDF. Если вы найдете лучший способ, пожалуйста, опубликуйте его здесь. DaH JImej!
Пабло А
4

Я нашел не идеальное решение, но очень эффективное.

Я использую PDF X-Change Viewer через Wine. Он имеет функцию распознавания текста, которая добавляет текстовый слой в существующий PDF-файл на основе изображений.

Таким образом, вы можете искать и копировать текст из этого невидимого слоя.

введите описание изображения здесь

Сделать
источник
2

Для решения командной строки вы можете использовать pdfocr .

Вкратце, установите программное обеспечение:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Затем запустите pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

Это сработало для меня на Ubuntu 12.04 LTS.

Роберт Ситек
источник
6
Github здесь: github.com/gkovacs/pdfocr . Но это имеет ту же проблему pdfsandwich, что и при изменении / сжатии PDF-файлов, содержащих изображения с высоким разрешением, которые в основном уничтожают некоторую информацию об исходных изображениях.
jmiserez
2

OCRmyPDF - это решение, которое легко реализуемо и обеспечивает выходной pdf с тем же качеством входного файла и разумным размером:

https://github.com/jbarlow83/OCRmyPDF

user127022
источник
У меня были отличные результаты с вашим сценарием. В отличие от pdfocr от Geza Kovacs, он не требует никаких дополнительных (трудно компилируемых в некоторых дистрибутивах Linux!) Библиотек. Спасибо!
Максим
0

Это мой быстрый и грязный раствор на основе ImageMagick - х convert, tesseract, parallelи pdftk(все доступные на распределениях DEBiAN основе). Это в значительной степени основано на этом сообщении в блоге .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf
stefanct
источник
0

Для всего каталога с файлами ppm вы можете использовать этот скрипт ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
PetaT
источник