Додавання інформації про OCR до PDF


28

У мене хороша якість сканування документа; таке сканування проводиться у форматі PDF.

Як я можу додати інформацію про ocr до PDF, щоб вона стала пошуковою? Під пошуком я маю на увазі, що мета полягає в тому, що, переглядаючи pdf з evince, CTRL-F насправді дозволяє мені шукати вміст pdf.



4
@Jakob, я не думаю, що це дура, ми задаємо різні речі. Інше питання стосується вилучення тексту з деякого файлу pdf (тобто створення відповідних файлів txt), тоді як моє запитання полягає у зміні pdf, щоб додати інформацію ocr та зробити роботу пошуковою функцією в читальнику pdf. Я уточню питання.
fdierre

Як і що ви використовували для сканування документа?
Мітч

@Mitch Я використовував у своєму офісі принтер / копір / сканер Ricoh Aficio MP-C2500, у якого дуже приємна програма для подачі документів. :-)
fdierre

Сканування та / або програмне забезпечення для OCR?
Мітч

Відповіді:


21

pdfsandwich

Робить те, що ви хочете, і надає деб-пакети Ubuntu. Він використовує tesseract як двигун OCR. Наступний виклик додає текстовий шар до сканованого PDF:

pdfsandwich scanned.pdf

Далі робиться те саме, але з іншою мовою (код ISO 639-2, tesseract-ocr-LANGCODEпакет завантаження ) та налаштування макета:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Якщо ви отримали помилку, завантажте останню версію дебюту у Sourceforge .

Відмова: Я розробник pdfsandwich і тому явно упереджений.


6
Це справді чудово, дякую. Однак це, здається, модифікує зображення, схоже на те, що на них надто чітка маска чи щось таке. Чи є спосіб залишити зображення точно такими, якими вони були раніше? У моєму конкретному випадку фільтр навіть в деяких рівняннях зміг видалити смужку з пари дробів. Все інше працює дуже добре, хоча ...
naught101

Пакет поганої якості: `Результати перевірки Lintian для /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: control-file-has-bad-permissions md5sums 0664! = 0644 E: pdfsandwich: control-file-has-bad-owner md5sums james / james! = root / root E: pdfsandwich: неправильний файл-власник-uid-або-gid usr / 1000/1000 E: pdfsandwich: неправильний файл-власник-uid-або-gid usr / bin / 1000 / 1000 E: pdfsandwich: неправильний файл-власник-uid-або-gid usr / bin / pdfsandwich ...
AB

Завантажте останню версію дебюту від SF . Якщо ви отримаєте помилку в кінці, можливо, це стосується ghostscript (v0.1.4). Зараз v0.1.6 використовує pdfunite.
Пабло А

1
@PabloBianchi Чи є спосіб ручної коректури тексту OCRed вручну pdfsandwitch? Я роблю це з деякими шведськими документами, і це працює добре, за винятком деяких неправильних написань (можливо, через шрифт оригіналу), які було б легко виправити, якщо це був текстовий файл, але як це зробити в отриманому PDF ?
zrajm

@zrajm ви можете використовувати деякі параметри pdfsandwich для кращого розпізнавання на кроці OCR. Для редагування прихованого тексту за зображенням PDF можна просто редагувати шар текстових полів за допомогою LibreOffice Draw, Inkscape або будь-якого інструменту редагування PDF. Якщо ви знайдете кращий спосіб, будь ласка, опублікуйте його тут. DaH jImej!
Пабло А


4

Я знайшов неідеальне рішення, але дуже ефективне.

Я використовую PDF X-Change Viewer через Wine. Він має функцію OCR, яка додає текстовий шар до існуючого PDF-файлу на основі зображень.

Таким чином, ви можете шукати та копіювати текст із цього невидимого шару.

введіть тут опис зображення


2

Для рішення командного рядка можна використовувати pdfocr .

Якщо коротко, встановіть програмне забезпечення:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Потім запустіть pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

Це працювало для мене на Ubuntu 12.04 LTS.


6
Тут Github: github.com/gkovacs/pdfocr . Але це має таку ж проблему pdfsandwich, що і при зміні / стисненні PDF-файлів, що містять зображення highres, в основному знищуючи частину вихідної інформації про зображення.
jmiserez

2

Рішення, яке легко реалізується і забезпечує вихідний PDF з однаковою якістю вхідного файлу плюс розумний розмір - OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF


Я мав відмінні результати з вашим сценарієм. На відміну від pdfocr від Geza Kovacs, він не вимагає зайвих (важко компілювати в деяких дистрибутивах Linux!). Дякую!
Максим

0

Це мій швидкий і брудний розчин на основі ImageMagick - х convert, tesseract, parallelі pdftk(всі доступні на розподілах DEBiAN основі). Він багато в чому заснований на цій публікації в блозі .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf

0

Для всього каталогу з файлами ppm ви можете використовувати цей скрипт ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.