У меня есть несколько отсканированных документов в формате PDF, и я хочу иметь возможность искать их. Как я могу это сделать?
По сути, я должен OCR PDF, а затем смешать извлеченный текст обратно в новый PDF. Я безуспешно пробовал ряд различных решений (в том числе найденных в Добавление информации о распознавании в PDF ).
Есть ли программный пакет, о котором я не знаю? Или скрипт, который это делает?
После комментария 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 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.
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
лет и поэтому в большой степени смещенный.
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())
изменил это, и это работало на меня
@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
, можно, конечно, проверить ее страницу справочника на некоторые дополнительные опции.
ОС: 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
.
У меня была эта та же проблема, таким образом, я записал это за выходные. Дайте ему выстрел; это работает отлично! Это - простая обертка приблизительно 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, как она в настоящее время пишется полностью в ударе.