Analyse d'images et questionnaires
Hello,
J'ai un besoin ponctuel de logiciel permettant l'analyse des réponses à un questionnaire papier rempli par des utilisateurs au crayon. Je ne sais pas encore trop si le logiciel d'analyse des questionnaires devra faire le scan (prévoir une interface pour ça, avec TWAIN et tout ?) ou si on aura déjà les images TIFF ou JPEG des questionnaires remplis scannés, mais déjà je me demande si c'est simple à faire de ce côté de piloter un scanner ?
Mais sinon le principal point de l'appli va être de faire l'analyse de ces scans (images N&B) pour trouver quelles cases sont cochées ou pas. J'ai à peu près une idée pour implémenter cela en gros (pour chaque ligne du questionnaire analyser les zones où se trouvent théoriquement les cases, et détecter celle qui a le plus de noir donc qui est le plus rempli)... mais
Bref les pistes et idées (surtout pour le redressement d'ailleurs) sont les bienvenues
J'ai un besoin ponctuel de logiciel permettant l'analyse des réponses à un questionnaire papier rempli par des utilisateurs au crayon. Je ne sais pas encore trop si le logiciel d'analyse des questionnaires devra faire le scan (prévoir une interface pour ça, avec TWAIN et tout ?) ou si on aura déjà les images TIFF ou JPEG des questionnaires remplis scannés, mais déjà je me demande si c'est simple à faire de ce côté de piloter un scanner ?
Mais sinon le principal point de l'appli va être de faire l'analyse de ces scans (images N&B) pour trouver quelles cases sont cochées ou pas. J'ai à peu près une idée pour implémenter cela en gros (pour chaque ligne du questionnaire analyser les zones où se trouvent théoriquement les cases, et détecter celle qui a le plus de noir donc qui est le plus rempli)... mais
- Je voulais savoir avant s'il n'y avait pas des frameworks tout faits que vous connaà®triez qui sont prévus pour ce genre de choses (ou même pour de l'analyse d'image) sans sortir non plus la grosse artillerie si possible
- Sinon la partie la plus complexe je pense va être l'étape de redressement (corriger l'inclinaison de la feuille scannée pour être sûr que toutes les images scannées sont bien alignées et pas de travers, et corriger un éventuel décalage si la feuille n'était pas calée pile au coin du scanner lors du scan...)
- En plus quand ils ont émis les questionnaires ils n'ont pas précisé a priori aux utilisateurs qu'il fallait remplir les cases en noir, il y en a beaucoup qui risquent de se contenter d'une croix, pas toujours très net à détecter...
Bref les pistes et idées (surtout pour le redressement d'ailleurs) sont les bienvenues
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour le redressement, je vois une solution manuelle: définir le contour réel de la feuille et appliquer une matrice de transformation.
Pour le coup de la case "avec une croix légère", une serait de dire qu'une case cochée est "moins blanche que blanche", en gros, si le niveau de gris de ta zone dépasse un certains seuils proche de blanc... Tu vois ce que je veux dire?
absolument, c'est surement très galéré !
Oui c'est déjà ce à quoi je pensais quand je disais dans mon message : A la limite côté algo là dessus c'est pas méchant il n'y a pas trop de problème. Mais c'est plutôt savoir si ça vaut le coup que je le fasse moi-même ou si y'a pas des frameworks de traitement d'image Mac (genre OpenCV?) qui me permettraient de faire ça plus simplement et plus rapidement ?
En même temps est-ce que ça en vaut la peine (en terme de perfs par exemple) d'utiliser un tel framework (quitte à devoir convertir les images en IplImage donc perdre qd mm) alors qu'en même temps c'est pas trop compliquer à coder moi-même... et dans ce cas auriez vous des directions à suggérer (en terme de frameworks ou libs ou autre, pas en terme d'algo ça ça va) pour avoir une analyse la plus optimisée possible (vu le nombre de questionnaires à analyser) ? Genre en profiter pour mettre GCD à profit (au moins via NSOperation) ? Utiliser Accelerate.framework ? Préférer CoreGraphics ou un autre framework plus optimal, ...?
Bref c'est pas l'algo qui pose problème, c'est les outils les mieux à utiliser pour avoir les meilleures perfs en terme d'Image Processing.
Et le preprocessing avant aussi (redresser l'image finalement ça devrait pas être si nécessaire, mais faut quand même s'assurer qu'elle est dans le bon sens et pas tête en bas par exemple), etc.
Pour les ratures ça c'est pas un vrai problème :
1) L'algo auquel je pensais (et buno aussi donc) résoud quand même pas mal le problème des cases cochées plus ou moins bien
2) S'il y a des réels ratés, c'est à dire si mon algo détecte plusieurs cases comme étant cochées et pas une seule, il peut noter la réponse comme indéfinie et laisser à l'opérateur le soin de rentrer la bonne valeur manuellement, du moment qu'il n'y en a pas à toutes les réponses
Tu peux regarder du coté de Cimg aussi t'aura peut-être ce qu'il te faut.
Pour le redressement le plus simple est de pouvoir poser des symbole qui te servirai de patron sur l'image. Comme des croix dans les coin par exemple.
http://www.ellert.se/twain-sane/
Une fois installé, tu peux utiliser un scanner en ligne de commande -donc simple à intégrer dans une appli-...
Et pour l'analyse d'image j'ai trouvé mon bonheur avec CoreImage (puissant ces trucs !) en quelques lignes j'ai codé un truc qui prend une image en entrée et me sort un tableau des réponses détectées, NSNotFound si ambiguà¯té de la réponse (ce qui n'arrive sur mes tests que dans le cas où il y a vraiment plusieurs cases cochées de façon similaires)
Seul truc que l'appli ne fait pas encore : détecter si la feuille a été scannée à l'envers ou pas ni la redresser si elle était inclinée. Mais c'est un bon début et c'est déjà très rapide :-)
C'est bon à savoir, ça
Depuis quand ImageKit permet de piloter un scanner? Des caméras oui. Mais j'ai jamais rien vu concernant un scanner.
IKScannerDeviceView
Depuis Snow Leopard, et c'est beaucoup plus facile qu'avec ICAApplication
Des retours question mise à jour de compatibilité par les fabricants?