Tornar o PDF existente pesquisável (OCR) via linha de comando / script

21

Estou procurando uma ferramenta de script offline que torne um arquivo PDF pesquisável existente executando o OCR nele, substituindo o arquivo não pesquisável original pela versão pesquisável e que possa ser executado sem supervisão.

Por exemplo, www.pdfscannerapp.com - faz exatamente o que eu preciso, mas é apenas uma interface gráfica do usuário - não programável.

Estou ciente de que o Evernote torna os arquivos PDF pesquisáveis, mas eles permanecem pesquisáveis ​​apenas quando estão dentro do Evernote.

Não estou procurando um OCR perfeito, mesmo um OCR moderadamente aceitável é bom, mas eu preferiria um pequeno utilitário em vez de um pacote de software volumoso.

(Estou ciente de uma pergunta semelhante, mas diferente, sobre o AD: Procurando software para digitalizar ou converter em PDF pesquisável e assinável - no entanto, não preciso assinar ou preencher PDFs, e minha exigência é que a solução seja programável)

EDITAR:

1) Vários utilitários permitem a extração estruturada de texto; no entanto, para ser extraído, o texto deve estar lá; Refiro-me principalmente a PDFs que contêm bitmaps agrupados, como é o caso de PDFs simples gerados por scanners.

2) Não estou necessariamente procurando uma solução gratuita e ficaria mais do que feliz em pagar por um bom utilitário que apenas faça o que eu preciso, mas não estou procurando aplicativos volumosos com um milhão de recursos que incluem um recurso de OCR, mas cujo custo não justifica comprá-los apenas para a funcionalidade OCR.

3) Como mencionado acima, não estou procurando um OCR perfeito, apenas um OCR moderadamente aceitável. Infelizmente, na minha experiência, o tesseract está realmente abaixo desse limite. Defino um OCR "moderadamente aceitável" que pode, por exemplo, OCR uma conta de serviço público para que pelo menos o número da conta (número do cliente) seja reconhecido corretamente.

EDIT: "programável por script" ou "automatizável", ou seja, capaz de ser acionado automaticamente e executado automaticamente sem a necessidade humana de entrada.

magma
fonte
2
... não sei o quão difícil seria para fazer, mas Tesseract OCR frequentemente mencionado code.google.com/p/tesseract-ocr e OCR em Unix.SE .
hhh
1
Há uma pergunta semelhante aqui , a resposta atende às suas necessidades?
Nohillside
1
Você menciona OCR. Seus requisitos incluem o manuseio de imagens em PDF ou arquivos PDF digitalizados? Para arquivos com texto neles como postscript simples, um conversor de PDF para texto como "PDF2Text Pilot" pode funcionar para você.
Tim B
@patrix Eu estava procurando por um utilitário menor, não necessariamente gratuito, mas com uma faixa de preço diferente. Ainda assim, é uma solução possível, obrigado.
magma
@ TimothyButler, infelizmente, estou lidando com PDFs digitalizados (imagens). Mas, boa dica, obrigado.
magma

Respostas:

5

Não está totalmente claro para mim quais são seus requisitos para poder "script" isso na "linha de comando".

Se você está falando sobre automação, isso é possível com qualquer número de utilitários.

ABBYY FineReader Express + Teclado Maestro + Hazel

Eu uso o ABBYY FineReader Express + Keyboard Maestro + Hazel da seguinte forma:

  1. Hazel monitora uma determinada pasta em busca de novos PDFs

  2. se um PDF for encontrado, ele será aberto no "ABBYY FineReader Express"

  3. O Keyboard Maestro automatiza o processo de transformar o PDF em um PDF pesquisável (OCR) e salva o arquivo em um diretório diferente.

Agora, se você ainda não possui o Hazel e o Keyboard Maestro, seus custos iniciais aumentarão muito rapidamente (embora eu dependa de ambos, considero-os uma pechincha).

Ações PDFPen + AppleScript + Folder

Você pode fazer algo semelhante com o PDFPen (ou PDFPenPro) e ações de pasta e AppleScript. Veja https://gist.github.com/prenagha/1355037 para um exemplo.

Marco Arment fez uma pesquisa de aplicativos de OCR para Mac e descobriu que o PDFPen tinha ótimos resultados e era fácil de automatizar.

Uma pesquisa no Google por "PDFpen AppleScript OCR" exibirá várias alternativas.

TJ Luoma
fonte
boa resposta TJ. Hazel é incrível, eu o possuo e gosto de usá-lo imensamente. Atualmente, não possuo o maestro de teclado / abbyy, mas o Hazel + PDFPen é uma combinação incrível. No geral, embora todas as respostas aqui sejam geralmente muito boas e atendam a públicos ligeiramente diferentes, acho que o Hazel + PDFPen é um bom ajuste para o problema original. Aceitaram.
magma
+1 em ABBYYFineReader Express, facilmente o melhor OCR lá fora agora e eu já passei por quase uma dúzia para um projeto de minha autoria
TechZen
12

O que você deseja é o Tesseract OCR. É um OCR de código aberto que é mantido pelo Google e suporta uma variedade de plataformas. Ele também possui uma interface de linha de comando nativa. É exatamente o que você está procurando e disponível no projeto de portas Mac e em homebrew .

Página inicial do projeto: https://github.com/tesseract-ocr

Como instalar no OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Exemplo de uso: tesseract -l eng input.pdf output

Daniel Kocevski
fonte
Bom projeto. Nos meus testes, o reconhecimento foi fraco, mas tenho certeza de que depende da minha incapacidade de ajustá-lo. Eu estava procurando uma solução mais preguiçosa, mas essa pode ser uma boa escolha, especialmente se você deseja mais controle e pode dedicar tempo a ela.
magma
O tesseract não fica muito bom se comparado aos aplicativos proprietários mais atuais. Em particular, ele tem problemas com codificação e matemática, geralmente produzindo muitos caracteres gregos.
TechZen 19/09/16
A versão do OS X permite entradas em PDF? A versão do Windows não.
Doug
8

Isenção de responsabilidade: NÃO É UMA SOLUÇÃO DE OCR (mas esta resposta ainda é útil para extrair texto de pdf)

Existe um projeto da Apache Software Foundation chamado Apache Tika :

Um kit de ferramentas detecta e extrai metadados e conteúdo de texto estruturado de vários documentos usando bibliotecas de analisadores existentes

Eles suportam a extração de texto em PDF usando o PDFBox :

permite a criação de novos documentos PDF, manipulação de documentos existentes e a capacidade de extrair conteúdo de documentos. O Apache PDFBox também inclui vários utilitários de linha de comando

Recentemente, eles também adicionaram suporte ao OCR (via Tesserac)

Para uma solução baseada em texto, o PDFBox facilita muito a extração de texto de um PDF:

Ele também tem outras opções interessantes que você pode ver nos documentos do ExtractText .

brutuscat
fonte
Definitivamente, uma boa opção para extrair texto, mas não há capacidade de OCR que eu possa ver.
magma
1
@magma OCR significa "reconhecimento óptico de caracteres", existe definitivamente "capacidade de OCR". Agora você precisa esclarecer: o seu problema é extrair texto de imagens de baixa resolução, como geradas com câmera VGA, scanner ruim ou imagem distante? Então seu problema é diferente e requer consideração física de coisas como super-resolução. Faça perguntas mais específicas e mais curtas para que possam ser respondidas. Sugiro que você simplifique esta pergunta para um recurso que deseja. Se você quiser algo mais, faça uma nova pergunta.
hhh
3
@hhh, uma coisa é extrair texto de um arquivo binário (como um PDF) para que seja utilizável e legível, analisando o formato binário. não há nada óptico nisso. o texto já está lá, esses utilitários apenas o extraem para facilitar o seu olhar, por assim dizer. O reconhecimento óptico de caracteres é diferente, na medida em que tenta reconhecer padrões de pixels em um bitmap e faz sentido suficiente para produzir um fragmento de texto correspondente.
magma
Isso não responde à pergunta original. AFAICT, pdfbox-app não faz OCR.
Feuermurmel 31/01
5

Eu recomendaria o DEVONThink Pro Office . É um excelente aplicativo e possui um ótimo suporte ao AppleScript. Infelizmente, apenas a versão 'Pro Office' tem capacidade de OCR - então você terá que desembolsar £ 100 (US $ 150).

Seria um exagero se você o estiver usando apenas para OCR com script - mas é um aplicativo muito bom.

[editar] - ah, basta reler sua postagem - isso seria um exagero!

Se você deseja apenas o OCR a partir do shell, tente conversar com a ABBY cujo mecanismo DEVON licencia:

http://www.abbyy-developers.com/en:tech:samples:commandline_ocr

Diggory
fonte
Embora o DEVONThink Pro Office no OS X seja um exagero, é interessante. Se os desenvolvedores o projetaram no OS X e no iOS, ele pode funcionar (mantendo a interface do usuário mais simples) - você sabe algo assim? No entanto, é uma boa idéia - a versão Pro adiciona automaticamente a camada OCR a todos os tipos de coisas, como capturas de tela e PDFs? E o usuário pode de alguma forma "script" isso?
hhh
2
Sim - o aplicativo possui um bom dicionário AppleScript, que, entre outras coisas, permite converter imagens armazenadas no aplicativo em PDFs pesquisáveis.
precisa
Suponha que eu tire fotos com o iPhone ou capturas de tela com o OS X e as coloque em uma pasta ProjectA, o DEVONThink adiciona a camada de OCR automaticamente a elas, mesmo sem especificar o idioma? Suponha que você os coloque em um DropBox e faça com que o DEVONThink no OSX verifique a pasta automaticamente. Você poderia trabalhar com ele no OS X e no iOS? É um conceito fascinante se for bem feito ... +1
hhh 6/13
De certa forma, parece o EverNote, onde o EverNote adiciona o OCR, mas não permite a exportação desse tipo. É possível exportar seus projetos deste software com o OCR? Caso contrário, algumas bibliotecas de OCR muito simples e algumas bibliotecas de análise lingüística podem funcionar melhor. Talvez o outro seja ABBY, ainda não sei.
precisa
2
Ele pode reconhecer em vários idiomas: i.stack.imgur.com/buDLI.png
Diggory
5

Você pode tornar seu PDF existente pesquisável convertendo-o em arquivo de texto. Você precisa disso, pelo menos , Imagemagick , Ghostscript (para conversão de PDF) e Tesseract OCR.

Alguns exemplos de linha de comando:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Isso pode ser estendido às suas necessidades.

Para instalar as ferramentas necessárias, no OSX você pode instalá-lo via Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

No Linux, use apt-getou em yumvez de brew.

Para obter mais ferramentas de OCR, verifique: OCR em sistemas Linux

Palavras-chave:

kenorb
fonte
4

Uma solução que é facilmente implementável e fornece um pdf de saída com a mesma qualidade de arquivo de entrada e tamanho razoável é o OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF

user127022
fonte
Parece uma solução interessante, embora eu tenha achado o back-end do OCR, Tesseract, bastante decepcionante (certamente devido às minhas próprias limitações em configurá-lo corretamente).
magma
Adoro o OCRmyPDF, veja minha resposta abaixo, que explica como instalar e arrastar e soltar automatizando-o de forma rápida e indolor com o docker.
Thadk
1

O Stackoverflow tem perguntas relacionadas na análise de PDF, cobrindo itens como PDFBox e TIKA do Apache que o PDFBox usa. O código ruby ​​abaixo extrai a gravação em PDF. Você precisa ter uma resolução suficientemente boa para que esse tipo de código funcione de maneira robusta. Portanto, adquira um scanner bom o suficiente com uma resolução grande e verifique se alguns softwares funcionam.

Exemplos

  1. https://github.com/yob/pdf-reader/tree/master/examples

Segmentos SO

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-later-than-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Editar]

Não tenho certeza se entendi seu problema agora. Você deseja adicionar a camada OCR a diferentes tipos de material, como fotos aleatórias, capturas de tela, PDFs sem a camada OCR e assim por diante? Não sei a solução, mas tenho certeza de que alguém sabe uma pergunta específica sobre como fazê-lo com o Automator e alguns softwares de OCR:

Script de automação com um software OCR para adicionar automaticamente o OCR ao material?

hhh
fonte
Novamente: não estou olhando para analisar ou extrair texto que já está lá. Eu estou procurando reconhecer texto (OCR) em arquivo PDF que são essencialmente imagens, bitmaps; originalmente eles não contêm texto.
magma
@magma por favor, veja minha atualização. Deseja automatizar a adição da camada de OCR para poder pesquisar sobre diferentes tipos de documentos, mesmo sem "texto pesquisável"? Se você pudesse fazer isso, poderia pesquisar todos os documentos no Finder - você entende? Estou surpreso se a Apple não faz isso nas próximas atualizações ...
hhh
como indicado na minha pergunta, sim.
magma
1

Para esse tipo de aplicativo auto-direcionado, sou um grande fã de Hazel.

Torna extremamente fácil o script de ações sem a necessidade de aprender uma ferramenta mais orientada à linha de comando, como perl ou python, e emparelhado com o mecanismo de OCR de sua escolha (o meu atualmente é o PDF Pen Pro), você não terá problemas para processar seus arquivos com o mínimo discutir.

Ambos são softwares pagos, mas a utilidade de ambos se estende além deste caso. Na minha situação, com o trabalho envolvido na digitalização de meus registros digitalizados passados ​​(e em papel), o preço deles supera em muito o tempo que eu gastaria programando isso em outro lugar e agora que possuo as duas ferramentas, posso realizar muitas outras tarefas com eles.

bmike
fonte
0

O PDFScannerApp possui um suporte não oficial a scripts. Entre em contato com o autor para a ação do Automator.

ndf
fonte
0

Eu uso o Adobe acrobat para OCR em lote. Meu scanner duplex pode OCR após a digitalização, mas a tecnologia OCR no acrobat é mais precisa na minha opinião. Apenas aponto para uma pasta que não possui OCR e, em seguida, o Acrobat salva o PDF como PDF pesquisável, incluindo agora uma camada de texto. Se eu quisesse fazer o OCR por linha de comando, não sei como, mas posso automatizar o final da GUI usando a Autohotkey. Não é tão confiável nem rápido como a linha de comando, mas executa o trabalho após a configuração de uma ação de fluxo de trabalho para minimizar a interação da GUI.

Para o Mac, o script da apple faz o que o Autohotkey faz no PC, embora ainda não tenha experimentado no meu Mac.

A tecla de atalho automática vem com um gravador, de modo que a maior parte da escrita do roteiro é um jantar para você, com um pouco de edição para aprimoramento e, talvez, um loop, se você quiser.

Venho experimentando imagens de OCR, mas ainda não automatizei o processo completamente por meio do acrobat. A linha de comando é ideal, mas ainda não encontrei um mecanismo de OCR de qualidade que exceda o acrobat, por isso fico com o acrobat por enquanto.

Dom
fonte
0

Eu me deparei com isso recentemente: http://ocrkit.com/faq.html

Você tem que pagar depois de 14 dias

Charlton
fonte
1
Bem-vindo ao perguntar diferente! Estamos tentando encontrar as melhores respostas e essas respostas fornecerão informações sobre por que elas são as melhores. Explique por que você acha que o software recomendado é melhor do que outros por aí. Em geral, as respostas somente de link são suscetíveis de serem excluídas, portanto, você sempre deseja incluir sua resposta em todas as informações relevantes. Consulte Como responder sobre como fornecer uma resposta de qualidade.
Fsb
0

Eu obtive uma conversão de arrastar e soltar de alta qualidade usando o Docker.

Se vocês:

  1. instale o Docker no seu Mac e
  2. em seguida, crie um novo aplicativo Automator
  3. com esse conteúdo em uma ação "Executar um script de shell". Escolha Entrada de passe:"as arguments"

/bin/bash texto do script:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

Você deverá arrastar e soltar PDFs nele e obterá um PDF com o mesmo nome com "-ocr" anexado ao nome do arquivo.

Eu imagino que poderia ser facilmente modificado para retornar um arquivo ao Automator para copiar em algum lugar também. Mais detalhes sobre o pacote docker fino do OCRmyPDF. e ferramenta principal (também mencionada em uma resposta diferente).

Você pode testá-lo no próprio Automator com a ação "Obter itens especificados do Finder" como entrada para isso.

Na primeira vez em que é executado, leva mais tempo, pois será necessário fazer o download das imagens do Docker para OCRmyPDF (invisivelmente). No Terminal, você pode executar alternativamente docker pull jbarlow83/ocrmypdfpara acelerar a primeira execução. Uma execução típica leva cerca de 10 segundos por página de alta DPI, mas tem resultados automaticamente de texto para voz, mesmo se houver tabelas ou diagramas. Antes do OCR, cortei usando Sejda para remover palavras de margem sem sentido de outras páginas.

O --force-ocrargumento diz à ferramenta para ignorar e substituir quaisquer tentativas anteriores de OCR, que nos meus casos geralmente são apenas parciais e inúteis.

thadk
fonte
0

O OCRKit possui suporte AppleScript e uma CLI. Na página de ajuda deles :

AppleScript

Você também pode criar um script para o OCRKit para integrá-lo ao seu fluxo de trabalho específico. Por exemplo, processe os arquivos recebidos, via pasta compartilhada, da copiadora MFP, etc.

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Linha de comando

Desde o OCRKit versão 2.5, o script de linha de comando direto é suportado. Isso simplifica bastante o uso do OCRKit no processamento em lote, permite definir mais opções e também é mais robusto e multiplataforma do que o AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Desde o OCRKit versão 16.9, opções adicionais de linha de comando são suportadas:

-r, --recursive directory

Verifique o diretório recursivamente para novos arquivos. Ignora arquivos do OCRKit, com camada de texto ou gráficos vetoriais.

--pattern "regex"

Padrão usado para combinar nomes de arquivos durante verificações recursivas. Por padrão %.pdf$, a recomendação para TIFF é%.tiff?$

--log file

Escreva informações e estatísticas do arquivo de log durante a varredura recursiva no arquivo.

--password secret

Use uma senha secreta para descriptografar arquivos PDF durante o processamento em lote.

--test-run [ fast ]

Execute apenas o processamento em lote de teste no modo de teste para testar arquivos PDF ou obter a contagem de páginas para estimar o tempo total de processamento. "rápido" verificará apenas a primeira página de cada arquivo, em vez de passar por todas as páginas para análise de imagem e vetor.

--tag name

Use o nome de atributo estendido para marcar o estado de processamento dos arquivos durante o processamento em lote. macos:OCRKit (%s)em vez disso, usará tags nativas do macOS Finder ou simplesmente macos:OCRKitnão incluirá o atributo state. A ordem do atributo de estado são: started, analyzed, processed, e pode ser também encrypted.

xilopaint
fonte