Як витягти текст з PDF, який не був побудований з індексом? Це весь текст, але я нічого не можу шукати чи вибирати. Я запускаю Kubuntu, і Okular не має цієї функції.
Як витягти текст з PDF, який не був побудований з індексом? Це весь текст, але я нічого не можу шукати чи вибирати. Я запускаю Kubuntu, і Okular не має цієї функції.
Відповіді:
Я мав успіх у ліцензованому BSD порту Linux системи Cuneiform OCR.
Здається, що бінарні пакети недоступні, тому вам потрібно створити його з джерела. Не забудьте встановити бібліотеки ImageMagick C ++, щоб мати підтримку по суті будь-якого формату вхідного зображення (інакше він приймає лише BMP).
Незважаючи на те, що він, по суті, недокументований, окрім короткого файлу README, я знайшов результати OCR досить хорошими. Приємно в тому, що він може виводити інформацію про положення для тексту OCR у форматі hOCR , так що стає можливим повернути текст у правильне положення у прихованому шарі файлу PDF. Таким чином ви можете створити PDF-файли, "які можна шукати", з яких можна скопіювати текст.
Я використовував hocr2pdf для відтворення PDF-файлів з оригінальних PDF-файлів, що містять лише зображення, та результатів OCR. На жаль, програма, здається, не підтримує створення 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"
до сценарію відразу після запуску клинопису.
Подивіться, чи буде працювати у вас pdftotext . Якщо його немає на вашій машині, вам доведеться встановити пакет poppler-utils
sudo apt-get install poppler-utils
Ви також можете знайти набір інструментів для використання у форматі PDF .
Повний список програмного забезпечення у форматі PDF тут на wikipedia.
Редагувати: Оскільки вам потрібні можливості OCR, я думаю, вам доведеться спробувати інший хід. (тобто я не зміг знайти конвертер pdf2text для Linux, який робить OCR).
Перетворення PDF у зображення
gs: Команда нижче повинна конвертувати багатосторінковий pdf в окремі файли tiff.
gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = літер -sOutputFile = ім'я файлу_% 04d.tif -dNOPAUSE -dBATCH - ім'я файлу
Утиліти ImageMagik : На сайті SuperUser є інші питання щодо використання ImageMagik, які ви можете використати для перетворення.
конвертувати foo.pdf foo.png
Перетворення зображення в текст за допомогою OCR
Взято із списку програм програм OCR у Вікіпедії
Google Docs буде в даний час використовує OCR для перетворення завантажених зображення / PDF документів в текст. Я мав добрий успіх у цьому.
Вони використовують систему OCR, яка використовується для гігантського проекту Google Книги .
Однак слід зазначити, що до обробки будуть прийняті лише PDF-файли розміром до 2 Мб.
Оновлення
1. Щоб спробувати це, завантажте у веб-браузер <2 МБ pdf-файли в документи Google.
2. Клацніть правою кнопкою миші на завантажений документ і натисніть «Відкрити за допомогою Google Документів».
... Документи Google перетворять текст і виводять у новий файл з такою ж назвою, але введіть Документи Google у ту саму папку.
Geza Kovacs створив пакет Ubuntu, який в основному є сценарієм, hocr2pdf
як запропонував Jukka, але робить процес трохи швидшим у налаштуванні.
Повідомлення на форумі Geza з 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 для вилучення тексту.