Pergunta

Eu tenho 55 000 arquivos de imagem (em formato JPG e TIFF), que são imagens de um livro.

A estrutura de cada página é o seguinte:

algum texto

--- (linha horizontal) ---

um número

algum texto

--- (linha horizontal) ---

outro número

algum texto

Não pode haver de zero a 4 linhas horizontais em qualquer página.

Eu preciso encontrar o que o número é, logo abaixo da linha horizontal.

Mas, os números seguem de forma rigorosa, a partir de uma em uma página, de modo a fim de encontrar o número, eu não preciso lê-lo: eu só poderia detectar a presença de linhas horizontais, que deve ser tanto mais fácil e mais seguro do que tentar OCR da página para detectar os números.

O algoritmo seria, basicamente:

for each image
  count horizontal lines
  print image name, number of horizontal lines
  next image

A questão é: qual seria a melhor biblioteca de imagens / idioma para fazer a parte "contar linhas horizontais"

Foi útil?

Solução

Provavelmente a maneira mais fácil de detectar suas linhas está usando o Hough transformar na OpenCV (que tem invólucros para várias línguas) .

O tranform OpenCV Hough irá detectar todas as linhas na imagem e voltar seus ângulos e começar / coordenadas de parada. Você só deve manter aqueles cujos ângulos estão perto horizontal e de comprimento adequado.

O O'Reilly Aprendizagem OpenCV explica em detalhes entrada e saída da função (p.156).

Outras dicas

Se você tem bom contraste, tente executar os componentes conectados e analisar o resultado. Pode ser uma alternativa para encontrar linhas através Hough e cobrirem o caso quando os seus elementos estruturados são um pouco curvadas ou uma linha algoritmo pega as linhas que você não quer que ele a pegar.

componentes ligados é um super rápido, dois raster varredura algoritmo e lhe dará uma máscara com tudo o que você conectado elementos nele marcado com rótulos diferentes e contabilizadas. Você pode descartar curto nada (em termos de relação de aspecto). No geral, este pode ser mais geral, mais rápido, mas, provavelmente, um pouco mais envolvido do que correr transformada de Hough. A transformada de Hough por outro lado, será mais tolerável para artefactos de contraste e até mesmo a abertura acidental de linhas. OpenCV tem as findContours () função que encontrar componentes para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top