Como extrair texto de um PDF que não foi criado com um índice? É tudo texto, mas não consigo pesquisar ou selecionar nada. Estou executando o Kubuntu e o Okular não possui esse recurso.
Como extrair texto de um PDF que não foi criado com um índice? É tudo texto, mas não consigo pesquisar ou selecionar nada. Estou executando o Kubuntu e o Okular não possui esse recurso.
Respostas:
Tive sucesso com a porta Linux licenciada pelo BSD do sistema Cuneiform OCR.
Parece que nenhum pacote binário está disponível, então você precisa compilá-lo a partir do código-fonte. Certifique-se de ter as bibliotecas ImageMagick C ++ instaladas para oferecer suporte a essencialmente qualquer formato de imagem de entrada (caso contrário, ele aceitará apenas BMP).
Embora pareça estar essencialmente não documentado, exceto por um breve arquivo README, eu achei os resultados do OCR muito bons. O bom disso é que ele pode gerar informações de posição para o texto do OCR no formato hOCR , para que seja 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" a partir dos quais é possível copiar texto.
Usei o hocr2pdf para recriar PDFs a partir dos resultados originais de PDFs e OCR somente de imagem. Infelizmente, o programa parece não oferecer suporte à criação de PDFs de várias páginas; portanto, você pode precisar 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"
Observe que o script acima é muito rudimentar. Por exemplo, ele não retém nenhum metadado do PDF.
aspell check --mode=html "$base.html"
no script logo após executar o cuneiforme.
Veja se o pdftotext funcionará para você. Se não estiver na sua máquina, você precisará instalar o pacote poppler-utils
sudo apt-get install poppler-utils
Você também pode encontrar o kit de ferramentas em pdf .
Uma lista completa de softwares pdf aqui na wikipedia.
Edit: Como você precisa de recursos de OCR, acho que precisará tentar uma abordagem diferente. (ou seja, não consegui encontrar um conversor linux pdf2text que faça OCR).
Converter pdf em imagem
gs: O comando abaixo deve converter pdf de várias páginas em arquivos tiff individuais.
gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = letra -sOutputFile = filename_% 04d.tif -dNOPAUSE -dBATCH - nome do arquivo
Utilitários do ImageMagik : Existem outras perguntas no site do SuperUser sobre o uso do ImageMagik que você pode usar para ajudá-lo a fazer a conversão.
converter foo.pdf foo.png
Converter imagem em texto com OCR
Retirado da lista de Wikipedia de software de OCR
Google docs vai agora usar OCR para converter seus documentos de imagem / pdf enviados ao texto. Eu tive um bom sucesso com isso.
Eles estão usando o sistema de OCR usado para o gigantesco projeto do Google Livros .
No entanto, é preciso observar que apenas PDFs com tamanho de 2 MB serão aceitos para processamento.
Atualização
1. Para testar, faça o upload de um PDF com <2 MB para o Google Docs a partir de um navegador da Web.
2. Clique com o botão direito do mouse no documento enviado e clique em "Abrir com o Google Docs".
... O Google Docs será convertido em texto e enviado para um novo arquivo com o mesmo nome, mas o Google Docs digitará a mesma pasta.
Geza Kovacs criou um pacote Ubuntu que é basicamente um script usando hocr2pdf
o Jukka sugerido, mas que torna as coisas um pouco mais rápidas de configurar.
No post do fórum do Geza sobre o Ubuntu, 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 https://github.com/gkovacs/pdfocr/
A melhor e mais fácil maneira de usá- pypdfocr
lo não muda o pdf
pypdfocr your_document.pdf
No final, você terá outro your_document_ocr.pdf
como deseja com texto pesquisável. O aplicativo não altera a qualidade da imagem. Aumenta um pouco o tamanho do arquivo adicionando o texto da sobreposição.
pypdfocr
não é mais suportado desde 2016 e notei alguns problemas por não serem mentidos. ocrmypdf
( module ) faz um trabalho semelhante e pode ser usado assim:
ocrmypdf in.pdf out.pdf
Para instalar:
pip install ocrmypdf
ou
apt install ocrmypdf
O PDFBeads funciona bem para mim. Este tópico " Converter imagens digitalizadas em um único arquivo PDF " me colocou em funcionamento. Para uma digitalização de livros em preto e branco, você precisa:
Na nova pasta, execute
pdfbeads * > ../Output.pdf
Isso colocará o PDF OCR ordenado no diretório pai.
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"
A biblioteca OCR da Asprise funciona na maioria das versões do Linux. Pode receber entrada e saída de PDF como PDF de pesquisa.
É um pacote comercial. Faça o download de uma cópia gratuita do Asprise OCR SDK para Linux aqui e execute-a desta maneira:
aocr.sh input.pdf pdf
Nota: o 'pdf' autônomo especifica o formato de saída.
Disclaimer: Eu sou um funcionário da empresa que produz o produto acima.
Experimente o Apache PDFBox para extrair conteúdo de texto do arquivo PDF. No caso de imagens incorporadas em arquivos PDF, use o ABBYY FineReader Engine CLI para Linux para extrair texto.