Coordenadas de texto emoldurado em uma imagem

Dec 18 2020

Gostaria de obter as coordenadas do texto em moldura de uma imagem. Os parágrafos têm bordas pretas finas. O resto da imagem contém parágrafos e esboços usuais.

Aqui está um exemplo:

Você tem alguma ideia de que tipo de algoritmos devo usar em Python com uma biblioteca de imagens para fazer isso? Obrigado.

Respostas

2 alecxe Dec 18 2020 at 18:02

Algumas ideias para detectar um texto em molduras que se resumem principalmente a caixas de pesquisa / retângulos de tamanho substancial:

  • encontre contornos com OpenCV, analise formas usando algoritmo de aproximação de polígono (também conhecido como algoritmo Ramer – Douglas – Peucker ). Além disso, você pode verificar a proporção da caixa delimitadora para certificar-se de que a forma é um retângulo, bem como verificar a largura da página, pois esta parece ser uma métrica conhecida no seu caso. PyImageSearch fez este artigo incrível:cv2.approxPolyDP()

    • Detecção de forma OpenCV
  • em uma questão relacionada , também há uma sugestão de olhar em Hough Lines para detectar uma linha horizontal, dando uma volta para detectar linhas verticais da mesma forma. Não tenho 100% de certeza de quão confiável essa abordagem seria.


Depois de encontrar os quadros de caixa, o próximo passo seria verificar se há algum texto dentro deles. A detecção de texto é um problema mais amplo em geral e há muitas maneiras de fazer isso. Aqui estão alguns exemplos:

  • aplicar detector de texto EAST

  • PixelLink

  • tesseract (por exemplo, via pytesseract), mas não tenho certeza se isso não teria muitos falsos positivos

  • se for um caso mais simples de caixas estarem vazias ou não, você pode verificar os valores médios de pixel dentro - por exemplo, com cv2.countNonZero(). Exemplos:

    • Como identificar retângulo vazio usando OpenCV
    • Conte os pixels pretos usando OpenCV

Referências adicionais:

  • ideias sobre detecção de quadrângulo / retângulo usando redes neurais convolucionais