Как извлечь текст из PDF, который не был создан с индексом? Это весь текст, но я не могу ничего искать или выбирать. Я использую Kubuntu, а у Okular нет этой функции.
Кажется, что двоичные пакеты недоступны, поэтому вам нужно собрать его из исходного кода. Убедитесь, что установлены библиотеки 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.
Любая идея улучшить этот сценарий, чтобы добавить этап проверки орфографии, чтобы исправить ошибки на этапе распознавания?
Гекхан Север
@ Gökhan Sever, вы имеете в виду добавление интерактивной проверки орфографии, когда пользователю предлагается заменить слова с ошибкой / неизвестные слова? Я думаю, что вы могли бы сделать это, добавив что-то вроде aspell check --mode=html "$base.html"скрипта сразу после запуска cuneiform.
Юкка Мателайнен
Это одно из решений. Однако, не видя весь контекст текста, трудно внести исправления. Было бы лучше увидеть интерфейс, встроенный в ocrfeeder.
Гекхан Север
1
Кстати, я использую tesseract для распознавания символов: заменяя клинообразную строку на: tesseract "$ page" "$ base" hocr
Gökhan Sever
1
Небольшое исправление: строка для tesseract, по крайней мере, для других языков, кроме английского, здесь, например, немецкий (= deu): `tesseract" $ page "" $ base "-l deu hocr` (конечно, вы должны удалить ``) ,
Кекс Доза
14
Посмотрите, будет ли pdftotext работать для вас. Если это не на вашем компьютере, вам придется установить пакет poppler-utils
Полный список программного обеспечения PDF здесь в Википедии.
Изменить: так как вам нужны возможности OCR, я думаю, вам придется попробовать другой способ. (т.е. я не смог найти конвертер Linux pdf2text, который делает OCR).
Конвертировать PDF в изображение
Сканирование изображения в текст с помощью инструментов OCR
gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = letter -sOutputFile = filename_% 04d.tif -dNOPAUSE -dBATCH - имя файла
Утилиты ImageMagik : на сайте SuperUser есть и другие вопросы об использовании ImageMagik, которые вы можете использовать, чтобы помочь вам сделать конвертацию.
Эта программа также работает для рукописных текстовых документов?
Иво Флипс
1
Нет, я не думаю, что у него есть возможности OCR. Он может просто извлечь текст, встроенный в PDF. Страница руководства
nagul
Да, это работает для документов PDF, которые уже поставляются со встроенным текстом. В моем случае это именно тот случай, когда это не так.
Хелдер С Рибейро
1
@ obvio171 Добавлен лучший вариант, который я могу найти, чтобы заставить OCR работать в вашем случае.
Нагуль
12
Документы Google теперь будут использовать OCR для преобразования загруженных изображений / PDF-документов в текст. У меня был хороший успех с этим.
Они используют систему распознавания текста, которая используется для гигантского проекта Google Книги .
Однако следует отметить, что к обработке будут приниматься только PDF-файлы размером до 2 МБ.
Обновление
1. Чтобы попробовать, загрузите PDF-файл <2 МБ в документы Google из веб-браузера.
2. Щелкните правой кнопкой мыши на загруженном документе и нажмите «Открыть с помощью Google Документов».
... Документы Google преобразуются в текст и выводятся в новый файл с тем же именем, но типом Документов Google в той же папке.
Ответ не совсем специфичен для Ubuntu, но я хочу поблагодарить вас: BRILLIANT решение! :)
Питто
Это было очень полезно :) Я загрузил 50 МБ файл вчера, и это сработало. Похоже, они увеличили размер ограничения.
Гаурав
2
Geza Kovacs сделал пакет Ubuntu, который в основном представляет собой скрипт, который использует, hocr2pdfкак предложил Юкка, но делает его немного быстрее в настройке.
Лучший и самый простой выход - pypdfocrэто не менять PDF
pypdfocr your_document.pdf
В конце у вас будет другой, your_document_ocr.pdfкак вы хотите, с возможностью поиска текста. Приложение не меняет качество изображения. Немного увеличивает размер файла, добавляя оверлейный текст.
Обновление 3 ноября 2018 года:
pypdfocrбольше не поддерживается с 2016 года, и я заметил некоторые проблемы из-за незанятости. ocrmypdf( модуль ) выполняет знакомую работу и может использоваться следующим образом:
Создать изображение для каждой страницы PDF; любой из приведенных выше примеров GS должен работать
Генерировать вывод hOCR для каждой страницы; Я использовал тессеракт (но учтите, что Cuneiform, кажется, работает лучше).
Переместите изображения и файлы hOCR в новую папку; имена файлов должны соответствовать, поэтому file001.tif требуется file001.html, file002.tif file002.html и т. д.
В новой папке запустите
pdfbeads * > ../Output.pdf
Это поместит сопоставленный, OCR'd PDF в родительский каталог.
#!/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"
В этом сообщении говорится, что продукт может это сделать, что является полезной подсказкой, которую следует опубликовать в виде комментария. Это не объясняет, как на самом деле решить проблему, что ответы должны делать. Можете ли вы расширить свой ответ, чтобы кто-то мог увидеть, как сделать решение?
fixer1234
Спасибо @ fixer1234, я отредактировал его, чтобы включить команду.
Я нашел ABBYY OCR довольно жалким, одной из наименее способных программ, которые я пробовал. Это может быть достаточно с действительно чистым изображением текста стандартного шрифта с типичным размером основного текста, без смешанных шрифтов, смешанных размеров, сложного макета, графики, линий и т. Д.
fixer1234
Я тоже попробовал, все отлично работает. У меня есть некоторые сомнения, вы можете мне помочь?
Правин Кумар К.Р.
Если то, что вам нужно, не указано в других ответах, лучше всего задать свой вопрос. Это даст ему много глаз.
Ответы:
Я имел успех с лицензированным BSD портом Linux системы Cuneiform OCR.
Кажется, что двоичные пакеты недоступны, поэтому вам нужно собрать его из исходного кода. Убедитесь, что установлены библиотеки ImageMagick C ++ для поддержки практически любого формата входного изображения (в противном случае он будет принимать только BMP).
Хотя он выглядит недокументированным, кроме краткого файла README, я обнаружил, что результаты распознавания довольно хорошие. Приятно то, что он может выводить информацию о положении для текста OCR в формате hOCR , так что становится возможным поместить текст обратно в правильное положение в скрытом слое файла PDF. Таким образом, вы можете создавать «доступные для поиска» PDF-файлы, из которых вы можете копировать текст.
Я использовал hocr2pdf для воссоздания PDF-файлов из оригинальных PDF-файлов только для изображений и результатов распознавания. К сожалению, программа не поддерживает создание многостраничных PDF-файлов, поэтому вам может потребоваться создать скрипт для их обработки:
Обратите внимание, что приведенный выше скрипт очень элементарен. Например, он не сохраняет метаданные PDF.
источник
aspell check --mode=html "$base.html"
скрипта сразу после запуска cuneiform.Посмотрите, будет ли pdftotext работать для вас. Если это не на вашем компьютере, вам придется установить пакет poppler-utils
Вы также можете найти набор инструментов PDF .
Полный список программного обеспечения PDF здесь в Википедии.
Изменить: так как вам нужны возможности OCR, я думаю, вам придется попробовать другой способ. (т.е. я не смог найти конвертер Linux pdf2text, который делает OCR).
Конвертировать PDF в изображение
gs: приведенная ниже команда должна конвертировать многостраничный pdf в отдельные файлы tiff.
Утилиты ImageMagik : на сайте SuperUser есть и другие вопросы об использовании ImageMagik, которые вы можете использовать, чтобы помочь вам сделать конвертацию.
Преобразование изображения в текст с помощью OCR
Взято из списка Википедии программного обеспечения для распознавания текста
источник
Документы Google теперь будут использовать OCR для преобразования загруженных изображений / PDF-документов в текст. У меня был хороший успех с этим.
Они используют систему распознавания текста, которая используется для гигантского проекта Google Книги .
Однако следует отметить, что к обработке будут приниматься только PDF-файлы размером до 2 МБ.
Обновление
1. Чтобы попробовать, загрузите PDF-файл <2 МБ в документы Google из веб-браузера.
2. Щелкните правой кнопкой мыши на загруженном документе и нажмите «Открыть с помощью Google Документов».
... Документы Google преобразуются в текст и выводятся в новый файл с тем же именем, но типом Документов Google в той же папке.
источник
Geza Kovacs сделал пакет Ubuntu, который в основном представляет собой скрипт, который использует,
hocr2pdf
как предложил Юкка, но делает его немного быстрее в настройке.Из поста на форуме Ubuntu Гезы с подробностями о пакете ...
Добавление репозитория и установка в Ubuntu
Запуск ocr для файла
GitHub репозиторий для кода https://github.com/gkovacs/pdfocr/
источник
Лучший и самый простой выход -
pypdfocr
это не менять PDFВ конце у вас будет другой,
your_document_ocr.pdf
как вы хотите, с возможностью поиска текста. Приложение не меняет качество изображения. Немного увеличивает размер файла, добавляя оверлейный текст.Обновление 3 ноября 2018 года:
pypdfocr
больше не поддерживается с 2016 года, и я заметил некоторые проблемы из-за незанятости.ocrmypdf
( модуль ) выполняет знакомую работу и может использоваться следующим образом:Установить:
или
источник
PDFBeads хорошо работает для меня. Эта тема « Преобразование отсканированных изображений в один файл PDF » заставила меня начать работу. Для сканирования черно-белой книги вам необходимо:
В новой папке запустите
Это поместит сопоставленный, OCR'd PDF в родительский каталог.
источник
другой скрипт с использованием tesseract:
источник
Библиотека Asprise OCR работает на большинстве версий Linux. Он может принимать ввод и вывод PDF как поиск PDF.
Это коммерческий пакет. Загрузите бесплатную копию Asprise OCR SDK для Linux здесь и запустите ее следующим образом:
Примечание: автономный pdf определяет формат вывода.
Отказ от ответственности: я сотрудник компании, производящей вышеуказанный продукт.
источник
Попробуйте Apache PDFBox, чтобы извлечь текстовое содержимое из PDF-файла. В случае изображений, встроенных в файлы PDF, используйте ABBYY FineReader Engine CLI для Linux для извлечения текста.
источник