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.
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.
Alguma idéia para melhorar esse script para adicionar um estágio de verificação ortográfica para corrigir erros na etapa de reconhecimento?
Gökhan Sever
@ Gökhan Sever, você quer dizer adicionar verificação ortográfica interativa onde o usuário é solicitado a substituir palavras com erros ortográficos / desconhecidos? Eu acho que você poderia fazer isso adicionando algo como aspell check --mode=html "$base.html"no script logo após executar o cuneiforme.
Jukka Matilainen
Esta é uma solução. No entanto, sem ver todo o contexto do texto, é difícil fazer correções. Seria melhor ver uma interface criada dentro do ocrfeeder.
Gökhan Sever
11
A propósito, eu uso o tesseract para reconhecimento de caracteres: substituindo a linha cuneiforme por: tesseract "$ page" "$ base" hocr
Gökhan Sever
11
Correção pequena: A linha para o tesseract pelo menos para outros idiomas que não o inglês, aqui, por exemplo, alemão (= deu) é: `tesseract" $ page "" $ base "-l deu hocr` (é claro que você deve remover o ``) .
Keks Dose
14
Veja se o pdftotext funcionará para você. Se não estiver na sua máquina, você precisará instalar o pacote poppler-utils
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).
Converta o pdf em uma imagem
Digitalize a imagem para texto usando as ferramentas de 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.
Este programa também funciona para documentos de texto manuscritos?
Ivo Flipse 24/08/09
11
Não, acho que não possui recursos de OCR. Pode apenas extrair o texto incorporado no pdf. Página de manual
nagul
Sim, isso funciona para documentos PDF que já vêm com o texto incorporado. Meu caso é exatamente um caso em que não existe.
Helder S Ribeiro
11
@ obvio171 Adicionada a melhor opção que encontrei para que o OCR funcionasse no seu caso.
nagul
12
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.
A resposta não é realmente específica do Ubuntu, mas quero realmente agradecer: solução BRILHANTE! :)
Pitto 28/03
Isso foi realmente útil :) Fiz upload de um arquivo de 50 MB ontem e funcionou. Parece que eles aumentaram o limite de tamanho.
Gaurav
2
Geza Kovacs criou um pacote Ubuntu que é basicamente um script usando hocr2pdfo 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 ...
A melhor e mais fácil maneira de usá- pypdfocrlo não muda o pdf
pypdfocr your_document.pdf
No final, você terá outro your_document_ocr.pdfcomo 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.
Atualização em 3 de novembro de 2018:
pypdfocrnã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:
Crie uma imagem para todas as páginas do PDF; qualquer um dos exemplos de gs acima deve funcionar
Gere saída hOCR para cada página; Eu usei o tesseract (mas observe que o cuneiforme parece funcionar melhor).
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.
Na nova pasta, execute
pdfbeads * > ../Output.pdf
Isso colocará o PDF OCR ordenado no diretório pai.
#!/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"
Esta publicação afirma que o produto pode fazê-lo, o que é uma dica útil que deve ser publicada como um comentário. Não explica como realmente resolver o problema, que é o que as respostas devem fazer. Você pode expandir sua resposta para que alguém possa ver como fazer a solução?
fixer1234
Obrigado @ fixer1234, editei-o para incluir o comando.
Eu achei o ABBYY OCR bastante lamentável, um dos programas menos capazes que eu tentei. Pode ser adequado com uma imagem muito limpa do texto fonte padrão de tamanho típico corpo de texto, sem fontes mistas, tamanhos mistos, layout complexo, gráficos, linhas, etc.
fixer1234
Ya, eu também tentei, funciona bem. Eu tenho alguma dúvida, você pode me ajudar?
Praveen Kumar KR
Se o que você precisa não é abordado em outras respostas aqui, a melhor coisa a fazer é fazer sua própria pergunta. Isso fará com que seja exposto a muitos olhos.
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:
Observe que o script acima é muito rudimentar. Por exemplo, ele não retém nenhum metadado do PDF.
fonte
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
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.
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 imagem em texto com OCR
Retirado da lista de Wikipedia de software de OCR
fonte
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.
fonte
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
Executando ocr em um arquivo
Repositório do GitHub para o código https://github.com/gkovacs/pdfocr/
fonte
A melhor e mais fácil maneira de usá-
pypdfocr
lo não muda o pdfNo 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.Atualização em 3 de novembro de 2018:
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:Para instalar:
ou
fonte
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
Isso colocará o PDF OCR ordenado no diretório pai.
fonte
outro script usando o tesseract:
fonte
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:
Nota: o 'pdf' autônomo especifica o formato de saída.
Disclaimer: Eu sou um funcionário da empresa que produz o produto acima.
fonte
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.
fonte