Como extrair texto com OCR de um PDF no Linux?

40

Como extraio texto de um PDF que não foi criado com um índice? É tudo texto, mas não consigo pesquisar nem selecionar nada. Estou executando o Kubuntu e o Okular não tem esse recurso.

    
por hsribei 24.08.2009 / 00:34

9 respostas

25

Eu tive sucesso com o portal Linux do sistema Cuneiform OCR licenciado pelo BSD.

Nenhum pacote binário parece estar disponível, então você precisa compilá-lo a partir do código-fonte. Certifique-se de ter as bibliotecas C ++ do ImageMagick instaladas para ter suporte para praticamente qualquer formato de imagem de entrada (caso contrário, ele só aceitará o BMP).

Embora pareça ser essencialmente não documentado, além de um breve arquivo README, achei os resultados do OCR muito bons. O bom disso é que ele pode gerar informações de posição para o texto OCR no formato hOCR , para que torna-se possível colocar o texto de volta na posição correta em uma camada oculta de um arquivo PDF. Dessa forma, você pode criar PDFs "pesquisáveis" dos quais você pode copiar texto.

Eu usei hocr2pdf para recriar os PDFs dos PDFs originais da imagem e os resultados do OCR . Infelizmente, o programa não parece oferecer suporte à criação de PDFs de várias páginas, portanto, talvez seja necessário criar um script para lidar com eles:

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

Por favor, note que o script acima é muito rudimentar. Por exemplo, não retém metadados em PDF.

    
por 31.08.2009 / 23:39
13

Veja se o pdftotext funcionará para você. Se não estiver na sua máquina, você terá que instalar o pacote poppler-utils

sudo apt-get install poppler-utils 

Você também pode encontrar o pdf toolkit de uso.

Uma lista completa de softwares em pdf aqui na wikipedia.

Editar: Como você precisa de recursos de OCR, eu acho que você terá que tentar uma abordagem diferente. (por exemplo, não consegui encontrar um conversor linux pdf2text que faça OCR).

  • Converta o PDF em uma imagem
  • Digitalize a imagem para o texto usando as ferramentas de OCR

Converter pdf para imagem

  • gs: o comando abaixo deve converter pdf de várias páginas em arquivos tiff individuais.

    gs -SDEVICE=tiffg4 -r600x600 -sPAPERSIZE=letter -sOutputFile=filename_%04d.tif -dNOPAUSE -dBATCH -- filename

  • Utilitários do ImageMagik : Há outras perguntas sobre o site do SuperUser sobre o uso do ImageMagik que você pode usar para ajudá-lo a fazer a conversão.

    convert foo.pdf foo.png

Converter imagem em texto com OCR

Extraído da lista da Wikipedia do software de OCR

    
por 24.08.2009 / 00:44
11

Google docs será agora use o OCR para converter seus documentos PDF / imagem enviados em texto. Eu tive um bom sucesso com isso.

Eles estão usando o sistema de OCR usado no gigantesco projeto Google Books .

No entanto, deve-se notar que somente PDFs com tamanho de 2 MB serão aceitos para processamento.

Atualizar
1. Para experimentar, faça o upload de um < 2MB pdf para o google docs a partir de um navegador da web.
2. Clique com o botão direito do mouse no documento carregado e clique em "Abrir com o Google Docs". ... O Google Docs converterá o texto e a saída em um novo arquivo com o mesmo nome, mas o Google Docs digitará na mesma pasta.

    
por 08.07.2011 / 17:43
2

Geza Kovacs fez um pacote do Ubuntu que é basicamente um script usando hocr2pdf como Jukka sugeriu, mas torna as coisas um pouco mais rápidas para configurar.

Do Ubuntu do Geza postagem no fórum com detalhes sobre o pacote ...

Adicionando o repositório e instalando no Ubuntu

sudo add-apt-repository ppa:gezakovacs/pdfocr
sudo apt-get update
sudo apt-get install pdfocr

Executando ocr em um arquivo

pdfocr -i input.pdf -o output.pdf

repositório do GitHub para o código link

    
por 16.10.2013 / 13:16
1

PDFBeads funciona bem para mim. Este tópico “ Converta Imagens Digitalizadas para um Single PDF File me colocou em funcionamento. Para uma verificação de livros, você precisa:

  1. Crie uma imagem para cada página do PDF; qualquer um dos exemplos gs acima deve funcionar
  2. Gera saída de hOCR para cada página; Eu usei o tesseract (mas note que o Cuneiform parece funcionar melhor).
  3. Mova as imagens e os arquivos hOCR para uma nova pasta; os nomes dos arquivos devem corresponder, portanto file001.tif precisa de file001.html, file002.tif file002.html, etc.
  4. Na nova pasta, execute

    pdfbeads * > ../Output.pdf
    

Isso colocará o PDF agrupado com OCR no diretório pai.

    
por 29.04.2012 / 15:30
1

outro script usando o 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"
    
por 22.11.2013 / 08:42
1
A

Biblioteca de OCR do Asprise funciona na maioria das versões do Linux. Pode levar entrada e saída de PDF como pesquisa PDF.

É um pacote comercial. Faça download de uma cópia gratuita do SDK do OCR da Asprise para Linux aqui e execute desta forma:

aocr.sh input.pdf pdf

Nota: o 'pdf' autônomo especifica o formato de saída.

Isenção de responsabilidade: sou funcionário da empresa que produziu o produto acima.

    
por 12.03.2015 / 02:38
1

A melhor e mais fácil maneira de usar o pypdfocr não muda o pdf

pypdfocr your_document.pdf

No final, você terá outro your_document_ocr.pdf da maneira que desejar com texto pesquisável. O aplicativo não altera a qualidade da imagem. Aumenta o tamanho do arquivo adicionando o texto de sobreposição.

Atualização de 3 de novembro de 2018:

pypdfocr não é mais suportado desde 2016 e notei alguns problemas devido a não serem mentalizados. O ocrmypdf ( module ) faz um trabalho similiar e pode ser usado assim:

ocrmypdf in.pdf out.pdf

Para instalar:

pip install ocrmypdf

ou

apt install ocrmypdf
    
por 03.02.2018 / 19:52
0

Teste o Apache PDFBox para extrair o conteúdo de texto do arquivo PDF. No caso de imagens incorporadas em arquivos PDF, use CLI do ABBYY FineReader Engine para Linux para extrair texto.

    
por 03.01.2015 / 09:37