Я имел успех с лицензированным BSD портом Linux системы Cuneiform OCR.
Кажется, что двоичные пакеты недоступны, поэтому вам нужно собрать его из исходного кода. Убедитесь, что установлены библиотеки ImageMagick C ++ для поддержки практически любого формата входного изображения (в противном случае он будет принимать только BMP).
Хотя он выглядит недокументированным, за исключением краткого файла README, я обнаружил, что результаты распознавания довольно хорошие. Приятно то, что он может выводить информацию о положении для текста OCR в hOCR формате, так что становится возможным вернуть текст обратно в правильное положение в скрытом слое файла PDF. Таким образом, вы можете создавать «доступные для поиска» PDF-файлы, из которых вы можете копировать текст.
Я использовал hocr2pdf для воссоздания PDF-файлов из оригинальных PDF-файлов только для изображений и результатов распознавания. К сожалению, программа не поддерживает создание многостраничных PDF-файлов, поэтому вам может потребоваться создать скрипт для их обработки:
#!/bin/bash # Run OCR on a multi-page PDF file and create a new pdf with the # extracted text in hidden layer. Requires cuneiform, hocr2pdf, gs. # Usage: ./dwim.sh input.pdf output.pdf set -e input="$1" output="$2" tmpdir="$(mktemp -d)" # extract images of the pages (note: resolution hard-coded) gs -SDEVICE=tiffg4 -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input" # OCR each page individually and convert into PDF for page in "$tmpdir"/page-*.tiff do base="$" cuneiform -f hocr -o "$base.html" "$page" hocr2pdf -i "$page" -o "$base.pdf" < "$base.html" done # combine the pages into one PDF gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$output" "$tmpdir"/page-*.pdf rm -rf -- "$tmpdir"
Обратите внимание, что приведенный выше скрипт очень элементарен. Например, он не сохраняет метаданные PDF.