PDA

View Full Version : Quale linguaggio per questo progetto?


decave
03-03-2022, 09:52
Buongiorno,

Per un progetto non lavorativo , cerco un modo di analizzare un' immagine tipo la seguente:

https://i.ibb.co/TgStyN2/Screenshot-20220303-103246-Sheets.jpg

Ottenendo come risultato la posizione dei numeri dell' immagine: 1 = A1, 2 = B1 , 3 = C1
Quindi nient' altro che un modo per identificare da un' immagine un determinato numero (che può variare di posizione a seconda dell immagine da analizzare proposta in una tabella fissa es. 1x3) in una determinata posizione (es. Cella A1)

Ho una buona esperienza di lavoro in ambito java ma ho conoscenza di base anche di altri linguaggi.
C è qualcosa in java che posso approfondire per fare quanto descritto o eventualmente in altri linguaggi o estensioni? (Es. Visual basic).
Anche spunti ed esempi di codici già esistenti nel web sarebbero di grazie aiuto.
Grazie.

ps: ho sentito parlare di tesseract ma non so se puo' darmi le informazioni sulle coordinate oltre al semplice OCR .

decave
04-03-2022, 06:50
Up

wingman87
04-03-2022, 08:00
Se lo dovessi fare io penso che proverei a usare le tecniche di elaborazione morfologica delle immagini per estrarre le righe orizzontali e verticali (vedi ad esempio: https://docs.opencv.org/4.x/dd/dd7/tutorial_morph_lines_detection.html).
Una volta fatto questo individuerei l'area delle celle e userei tesseract per estrarne il contenuto.
Nota: il link è solo un esempio, non sto dicendo che userei c++, va bene un qualunque linguaggio che abbia una libreria di elaborazione delle immagini con le operazioni necessarie.

-MiStO-
09-03-2022, 07:13
beh al volo e molto a grandi linee, io farei così:
- identificazione righe e colonne, nel caso in cui ci sia variabilità tra immagini
- lettura dati


per il punto 1, userei hough lines di opencv per identificare i riquadri
https://docs.opencv.org/3.4/d9/db0/tutorial_hough_lines.html
(devi giocare un po con i parametri perchè è comunque una funzione "probabilistica" ma ritorna risultati più che accettabili)
dalle linee trovate(magari fai una scrematura, due passaggi per trovare linee verticali e poi orizzontali così da eliminare un po di falsi positivi) ti ricavi le coordinate delle varie celle dopodichè passi queste subimmagini alla parte ocr

per il punto 2 ti recuperi un qualsiasi OCR, tesseract va bene, e via andare

!fazz
22-03-2022, 11:42
per completare il discorso di -MiStO-

la cosa più importante più che il linguaggio di per se è che ti devi basare su librerire di machine vision (visto la semplicità del task direi di evitare gli approggio basati su reti neurali ed usare le comuni tecniche di imaging per l'automazione)

le scelte sono due

halcon o opencv

halcon è a pagamento (ma puoi provarle gratis ) sono sicuramente più avanzate e performanti di opencv che è il suo duale open source

entrambe le librerie sono disponibili per una marea di linguaggi da .net a c++ quindi scelgi il linguaggio che più ti aggrada purchè supporti una di queste librerie