GNU/Linux >> Znalost Linux >  >> Linux

Jak extrahovat text pomocí OCR z PDF na Linuxu?

Měl jsem úspěch s linuxovým portem systému Cuneiform OCR s licencí BSD.

Zdá se, že nejsou k dispozici žádné binární balíčky, takže je musíte sestavit ze zdroje. Ujistěte se, že máte nainstalované knihovny ImageMagick C++, aby podporovaly v podstatě jakýkoli formát vstupního obrázku (jinak bude akceptovat pouze BMP).

I když se to zdá být v podstatě nezdokumentované, kromě stručného souboru README, výsledky OCR mi přišly docela dobré. Pěkná věc na tom je, že může vydávat informace o poloze pro text OCR ve formátu hOCR, takže je možné umístit text zpět na správnou pozici do skryté vrstvy souboru PDF. Tímto způsobem můžete vytvářet „prohledávatelné“ PDF, ze kterých můžete kopírovat text.

Použil jsem hocr2pdf k opětovnému vytvoření souborů PDF z původních souborů PDF obsahujících pouze obrázky a výsledků OCR. Bohužel se zdá, že program nepodporuje vytváření vícestránkových PDF, takže možná budete muset vytvořit skript, který je zvládne:

#!/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"

Vezměte prosím na vědomí, že výše uvedený skript je velmi rudimentární. Například neuchovává žádná metadata PDF.


Podívejte se, zda vám pdftotext bude fungovat. Pokud na vašem počítači není, budete si muset nainstalovat balíček poppler-utils

sudo apt-get install poppler-utils 

Můžete také najít sadu nástrojů pro použití ve formátu pdf.

Úplný seznam softwaru ve formátu pdf zde na wikipedii.

Upravit: Protože potřebujete OCR schopnosti, myslím, že budete muset zkusit jiný přístup. (tj. nemohl jsem najít linuxový pdf2textový konvertor, který umí OCR).

  • Převeďte soubor PDF na obrázek
  • Naskenujte obrázek na text pomocí nástrojů OCR

Převést pdf na obrázek

  • gs:Níže uvedený příkaz by měl převést vícestránkové pdf na jednotlivé soubory tiff.

    gs -SDEVICE=tiffg4 -r600x600 -sPAPERSIZE=písmeno -sOutputFile=název_souboru_%04d.tif -dNOPAUSE -dBATCH -- název_souboru

  • Obslužné programy ImageMagik:Na webu SuperUser jsou další otázky týkající se používání ImageMagik, které vám mohou pomoci při převodu.

    převést foo.pdf foo.png

Převeďte obrázek na text pomocí OCR

  • GOCR:stránka Wikipedie
  • Ocrad:stránka Wikipedie
  • ocropus:stránka Wikipedie
  • tesseract-ocr:stránka Wikipedie

Převzato ze seznamu softwaru OCR na Wikipedii


Dokumenty Google nyní budou používat OCR k převodu nahraných obrázků/dokumentů PDF na text. Měl jsem s tím dobrý úspěch.

Používají systém OCR, který se používá pro gigantický projekt Google Books.

Je však třeba poznamenat, že ke zpracování budou přijaty pouze soubory PDF do velikosti 2 MB.

Aktualizovat
1. Chcete-li to vyzkoušet, nahrajte <2 MB pdf do google docs z webového prohlížeče.
2. Klikněte pravým tlačítkem na nahraný dokument a klikněte na „Otevřít pomocí Dokumentů Google“.
...Dokumenty Google se převedou na text a výstup do nového souboru se stejným názvem, ale typ Dokumenty Google ve stejné složce.


Linux
  1. Jak vytvořit video ze souborů PDF v Linuxu

  2. Jak odeslat e-mail s přílohou a tělem z Linuxu

  3. Jak rozeznat binární soubory od textových souborů v linuxu

  1. Jak formátovat akademické práce na Linuxu pomocí groff -me

  2. gImageReader – Extrahujte text z obrázků a PDF v Linuxu

  3. Nástroje pro extrahování textu z powerpoint pptx v linuxu?

  1. Jak převést PDF do JPG pomocí příkazového řádku v Linuxu?

  2. Jak vyberu veškerý text ze souboru s nano?

  3. Jak mohu sdílet internet s Windows z mého Linuxového boxu?