Как извлечь текст из PDF, который не был создан с индексом? Это весь текст, но я не могу ничего искать или выбирать. Я использую Kubuntu, а у Okular нет этой функции.
Как извлечь текст из PDF, который не был создан с индексом? Это весь текст, но я не могу ничего искать или выбирать. Я использую Kubuntu, а у Okular нет этой функции.
Ответы:
Я имел успех с лицензированным 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.
aspell check --mode=html "$base.html"
скрипта сразу после запуска cuneiform.
Посмотрите, будет ли pdftotext работать для вас. Если это не на вашем компьютере, вам придется установить пакет poppler-utils
sudo apt-get install poppler-utils
Вы также можете найти набор инструментов PDF .
Полный список программного обеспечения PDF здесь в Википедии.
Изменить: так как вам нужны возможности OCR, я думаю, вам придется попробовать другой способ. (т.е. я не смог найти конвертер Linux pdf2text, который делает 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
Взято из списка Википедии программного обеспечения для распознавания текста
Документы Google теперь будут использовать OCR для преобразования загруженных изображений / PDF-документов в текст. У меня был хороший успех с этим.
Они используют систему распознавания текста, которая используется для гигантского проекта Google Книги .
Однако следует отметить, что к обработке будут приниматься только PDF-файлы размером до 2 МБ.
Обновление
1. Чтобы попробовать, загрузите PDF-файл <2 МБ в документы Google из веб-браузера.
2. Щелкните правой кнопкой мыши на загруженном документе и нажмите «Открыть с помощью Google Документов».
... Документы Google преобразуются в текст и выводятся в новый файл с тем же именем, но типом Документов Google в той же папке.
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/
Лучший и самый простой выход - pypdfocr
это не менять PDF
pypdfocr your_document.pdf
В конце у вас будет другой, your_document_ocr.pdf
как вы хотите, с возможностью поиска текста. Приложение не меняет качество изображения. Немного увеличивает размер файла, добавляя оверлейный текст.
pypdfocr
больше не поддерживается с 2016 года, и я заметил некоторые проблемы из-за незанятости. ocrmypdf
( модуль ) выполняет знакомую работу и может использоваться следующим образом:
ocrmypdf in.pdf out.pdf
Установить:
pip install ocrmypdf
или
apt install ocrmypdf
PDFBeads хорошо работает для меня. Эта тема « Преобразование отсканированных изображений в один файл PDF » заставила меня начать работу. Для сканирования черно-белой книги вам необходимо:
В новой папке запустите
pdfbeads * > ../Output.pdf
Это поместит сопоставленный, OCR'd PDF в родительский каталог.
другой скрипт с использованием 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"
Библиотека Asprise OCR работает на большинстве версий Linux. Он может принимать ввод и вывод PDF как поиск PDF.
Это коммерческий пакет. Загрузите бесплатную копию Asprise OCR SDK для Linux здесь и запустите ее следующим образом:
aocr.sh input.pdf pdf
Примечание: автономный pdf определяет формат вывода.
Отказ от ответственности: я сотрудник компании, производящей вышеуказанный продукт.
Попробуйте Apache PDFBox, чтобы извлечь текстовое содержимое из PDF-файла. В случае изображений, встроенных в файлы PDF, используйте ABBYY FineReader Engine CLI для Linux для извлечения текста.