У меня хорошее качество сканирования документа; такое сканирование в формате PDF.
Как я могу добавить информацию ocr в pdf, чтобы она стала доступной для поиска? Под поиском я подразумеваю, что целью является то, что при просмотре PDF с evince, CTRL-F фактически позволяет мне искать в содержимом PDF.
Делает то, что вы хотите, и предоставляет пакеты 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 и поэтому, очевидно, предвзятый.
pdfsandwitch
? I' m выполнение этого с некоторыми шведскими документами, и это работает хорошо, за исключением некоторых орфографических ошибок (вероятно, из-за original' s шрифт), который было бы легко зафиксировать, если бы это был текстовый файл, но как я могу сделать это в получающемся PDF?
– Mawcel
13.01.2020, 16:55
pdfunite
.
– taydakov
13.01.2020, 16:57
Я нашел неидеальное решение, но очень эффективное.
Я использую PDF X-Change Viewer через Wine. Он имеет функцию распознавания текста, которая добавляет текстовый слой в существующий PDF-файл на основе изображений.
Таким образом, вы можете искать и копировать текст из этого невидимого слоя.
Решение, которое легко реализуемо и обеспечивает выходной pdf с тем же качеством входного файла и приемлемым размером, - OCRmyPDF:
Для всего каталога с файлами 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"
Для решения командной строки вы можете использовать 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.
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