Как извлечь текст с OCR от PDF на Linux?

Как я извлекаю текст из PDF, который не был создан с индексом? Это - весь текст, но я не могу искать или выбрать что-либо. Я выполняю Kubuntu, и Okular не имеет этой функции.

44
задан 24.08.2009, 01:34

2 ответа

Я имел успех с BSD-лицензированным портом Linux Клиновидной Системы оптического распознавания.

Никакие двоичные пакеты, кажется, не доступны, таким образом, необходимо создать его из источника. Обязательно имейте библиотеки C++ ImageMagick, установленные, чтобы иметь поддержку по существу любого входного формата изображения (иначе, это только примет BMP).

В то время как это, кажется, чрезвычайно не документировано кроме краткого файла README, я нашел результаты OCR довольно хорошими. Хорошая вещь об этом состоит в том, что это может произвести информацию о положении для текста OCR в hOCR формате, так, чтобы стало возможно отложить текст в в правильном положении в скрытом слое файла PDF. Таким образом, можно создать "доступный для поиска" PDFs, с которого можно скопировать текст.

Я использовал hocr2pdf для воссоздания PDFs из исходного PDFs только для изображения и результатов OCR. К сожалению, программа, кажется, не поддерживает создающий многостраничный PDFs, таким образом, Вам, возможно, придется создать сценарий для обработки их:

#!/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="${page%.tiff}"
    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.

25
ответ дан 07.12.2019, 08:39

Посмотрите, будет ли pdftotext работать на Вас. Если это не находится на Вашей машине, необходимо будет установить poppler-utils пакет

sudo apt-get install poppler-utils 

Вы могли бы также найти инструментарий PDF использования.

Полный список программного обеспечения PDF здесь на Википедию.

Править: Так как Вам действительно нужны возможности OCR, я думаю, что необходимо будет попробовать другой гвоздь. (т.е. я не мог найти преобразователь linux pdf2text, который делает OCR).

  • Преобразуйте PDF в изображение
  • Отсканируйте изображение к тексту с помощью инструментов OCR

Преобразуйте PDF для обработки изображений

  • gs: ниже команды должен преобразовать многостраничный PDF в отдельные файлы TIFF.

    gs-SDEVICE=tiffg4-r600x600-sPAPERSIZE=letter-sOutputFile=filename _ % 04d.tif-dNOPAUSE-dBATCH - имя файла

  • Утилиты ImageMagik: существуют другие вопросы на сайте SuperUser об использовании ImageMagik, который Вы могли бы использовать, чтобы помочь Вам сделать преобразование.

    преобразуйте foo.pdf foo.png

Преобразуйте изображение для отправки текстовых сообщений с OCR

Взятый из списка Википедии программного обеспечения OCR

14
ответ дан 07.12.2019, 08:39

Теги

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