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

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

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

28
задан 13.01.2020, 16:54

7 ответов

Есть два проекта, которые делают свое дело: GScan2PDF и OCRFeeder

9
ответ дан 13.01.2020, 16:54

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 и поэтому, очевидно, предвзятый.

21
ответ дан 13.01.2020, 16:55
  • 1
    Это является действительно большим, спасибо. Однако это, кажется, изменяет изображения, похож на него, выполняет нерезкую маску по ним или чему-то. Существует ли способ оставить изображения точно, как они ранее были? В моем конкретном экземпляре фильтру даже удалось удалить панель из нескольких частей в некоторых уравнениях. Все остальное работает вполне прилично хотя... – daniel kullmann 13.01.2020, 16:55
  • 2
    @PabloBianchi Является там каким-либо путем к ручной корректуре текста OCRed с помощью pdfsandwitch? I' m выполнение этого с некоторыми шведскими документами, и это работает хорошо, за исключением некоторых орфографических ошибок (вероятно, из-за original' s шрифт), который было бы легко зафиксировать, если бы это был текстовый файл, но как я могу сделать это в получающемся PDF? – Mawcel 13.01.2020, 16:55
  • 3
    Плохой качественный пакет: '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! = базируйтесь/базируйтесь E: pdfsandwich: wrong-file-owner-uid-or-gid usr/1000/1000 E: pdfsandwich: wrong-file-owner-uid-or-gid usr/bin/1000/1000 E: pdfsandwich: wrong-file-owner-uid-or-gid usr/bin/pdfsandwich... – raterus 13.01.2020, 16:56
  • 4
    @zrajm можно использовать некоторые из pdfsandwich параметры для лучшего распознавания на шаге OCR. Для редактирования скрытого текста позади изображения PDF, можно просто отредактировать текст boxs, слой с LibreOffice Тянут, Inkscape или любой инструмент редактирования PDF. При нахождении лучшего пути, отправьте его здесь. ТИРЕ jImej! – Jamie Jackson 13.01.2020, 16:56
  • 5
    Загрузка последняя версия deb от SF. Если Вы добираетесь, ошибка в конце могла бы быть связана с ghostscript (v0.1.4). Теперь использование v0.1.6 pdfunite. – taydakov 13.01.2020, 16:57

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

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

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

enter image description here

4
ответ дан 13.01.2020, 16:55

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

https://github.com/jbarlow83/OCRmyPDF [ 112]

2
ответ дан 13.01.2020, 16:56
  • 1
    У меня были превосходные результаты с Вашим сценарием. В отличие от pdfocr Geza Kovacs, это не требует никого дополнительного (трудно для компиляции в некоторых дистрибутивах Linux!) библиотеки.Спасибо! – Abdull 13.01.2020, 16:56

Для всего каталога с файлами 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"
0
ответ дан 13.01.2020, 16:57

Для решения командной строки вы можете использовать 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.

2
ответ дан 13.01.2020, 16:57
  • 1
    GitHub здесь: github.com/gkovacs/pdfocr . Но это имеет ту же проблему как pdfsandwich, как она изменяет/сжимает PDFs, содержащий изображения высокого разрешения, в основном уничтожая часть информации об исходном изображении. – Keymon 13.01.2020, 16:57

Это моё быстрое и грязное решение, основанное на convert, tesseract, parallel и pdftk ImageMagick (все они доступны в дистрибутивах на основе 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
0
ответ дан 13.01.2020, 16:58

Теги

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