40

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

9 ответов9

25

Я имел успех с лицензированным 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="${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.

13

Посмотрите, будет ли работать 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

Взято из списка Википедии программного обеспечения для распознавания текста

11

Документы Google теперь будут использовать OCR для преобразования загруженных изображений / PDF-документов в текст. У меня был хороший успех с этим.

Они используют систему OCR, которая используется для гигантского проекта Google Книги .

Однако следует отметить, что к обработке будут приниматься только PDF-файлы размером до 2 МБ.

Обновить
1. Чтобы попробовать, загрузите PDF-файл <2 МБ в документы Google из веб-браузера.
2. Щелкните правой кнопкой мыши на загруженном документе и нажмите "Открыть с помощью Google Документов".
...Документы Google преобразуются в текст и выводятся в новый файл с тем же именем, но типом Документов Google в той же папке.

2

Geza Kovacs сделал пакет Ubuntu, который в основном представляет собой скрипт, использующий hocr2pdf как предложил Юкка, но делает процесс установки немного быстрее.

Из поста на форуме Ubuntu Гезы с подробностями о пакете ...

Добавление репозитория и установка в Ubuntu

sudo add-apt-repository ppa:gezakovacs/pdfocr
sudo apt-get update
sudo apt-get install pdfocr

Запуск ocr для файла

pdfocr -i input.pdf -o output.pdf

GitHub репозиторий для кода https://github.com/gkovacs/pdfocr/

1

PDFBeads хорошо работает для меня. Эта тема « Преобразование отсканированных изображений в один файл PDF » заставила меня начать работу. Для сканирования черно-белой книги вам необходимо:

  1. Создать изображение для каждой страницы PDF; любой из приведенных выше примеров GS должен работать
  2. Генерировать вывод hOCR для каждой страницы; Я использовал тессеракт (но учтите, что Cuneiform, кажется, работает лучше).
  3. Переместите изображения и файлы hOCR в новую папку; имена файлов должны соответствовать, поэтому file001.tif требует file001.html, file002.tif file002.html и т. д.
  4. В новой папке запустите

    pdfbeads * > ../Output.pdf
    

Это поместит сопоставленный, OCR'd PDF в родительский каталог.

1

другой скрипт с использованием tesseract:

#!/bin/bash
# Run OCR on a multi-page PDF file and create a txt with the
# extracted text in hidden layer. Requires tesseract, gs.
# Usage: ./pdf2ocr.sh input.pdf output.txt

set -e

input="$1"
output="$2"

tmpdir="$(mktemp -d)"

# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiff24nc -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}"
    tesseract "$base.tiff" $base
done

# combine the pages into one txt
cat "$tmpdir"/page-*.txt > $output

rm -rf -- "$tmpdir"
1

Лучший и самый простой выход - использовать pypdfocr он не меняет PDF

pypdfocr your_document.pdf

В конце у вас будет другой your_document_ocr.pdf так, как вы хотите, с текстом для поиска. Приложение не меняет качество изображения. Немного увеличивает размер файла, добавляя наложенный текст.

Обновление 3 ноября 2018 года:

pypdfocr больше не поддерживается с 2016 года, и я заметил некоторые проблемы из-за отсутствия поддержки. ocrmypdf(модуль) выполняет знакомую работу и может использоваться следующим образом:

ocrmypdf in.pdf out.pdf

Установить:

pip install ocrmypdf

или же

apt install ocrmypdf
1

Библиотека Asprise OCR работает на большинстве версий Linux. Он может принимать ввод и вывод PDF как поиск PDF.

Это коммерческий пакет. Загрузите бесплатную копию Asprise OCR SDK для Linux здесь и запустите ее следующим образом:

aocr.sh input.pdf pdf

Примечание: автономный pdf указывает формат вывода.

Отказ от ответственности: я сотрудник компании, производящей вышеуказанный продукт.

0

Попробуйте Apache PDFBox, чтобы извлечь текстовое содержимое из PDF-файла. В случае изображений, встроенных в PDF-файлы, используйте ABBYY FineReader Engine CLI для Linux для извлечения текста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .