Analyse d'images et questionnaires

AliGatorAliGator Membre, Modérateur
13:24 modifié dans Vos applications #1
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
  • 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

Réponses

  • muqaddarmuqaddar Administrateur
    13:24 modifié #2
    Sans compter les ratures, je coche et je remplis cette case de noir car je me suis trompé, et j'en coche une autre avec une simple croix...
  • BunoBuno Membre
    13:24 modifié #3
    Hello,
    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?
  • devulderdevulder Membre
    13:24 modifié #4
    dans 1288281453:

    Sans compter les ratures, je coche et je remplis cette case de noir car je me suis trompé, et j'en coche une autre avec une simple croix...


    absolument, c'est surement très galéré ! :)

    image.JPG
  • AliGatorAliGator Membre, Modérateur
    13:24 modifié #5
    dans 1288281554:

    Hello,
    Pour le redressement, je vois une solution manuelle: définir le contour réel de la feuille et appliquer une matrice de transformation.
    Oui mais le but de faire le logiciel c'est que tout soit automatique. Bon le client m'a dit que les feuilles seraient scannées avec une copieuse à  chargement par bac donc elles devraient pas être trop mal alignées et pas trop inclinées... Mais vu qu'il y aura sans doute genre plus d'un millier de feuilles réponses... il faut minimiser les actions de l'opérateur, qui ne va pas s'amuser à  redresser tout à  la main !

    dans 1288281554:

    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?
    Oui c'est déjà  ce à  quoi je pensais quand je disais dans mon message :
    dans 1288280251:
    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)...
    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
  • LeeroyLeeroy Membre
    octobre 2010 modifié #6
    Le mieux c'est OpenCV. Y a toutes les bases pour faire de la reconnaissance. Le problème c'est qu'un grande partie est quand même toujours en bêta et le comportement de certaines fonctions changent entre chaque version.  ::)

    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.
  • MalaMala Membre, Modérateur
    13:24 modifié #7
    Côté scanner, regardes de ce côté...
    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-...
    <br />scanimage --mode Color --format tiff &gt; test.tiff<br />

  • AliGatorAliGator Membre, Modérateur
    13:24 modifié #8
    Bon en fait avec ImageKit j'ai mon bonheur côté scanner
    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 :-)
  • BunoBuno Membre
    13:24 modifié #9
    Cool...
    C'est bon à  savoir, ça
  • MalaMala Membre, Modérateur
    13:24 modifié #10
    dans 1288428415:

    Bon en fait avec ImageKit j'ai mon bonheur côté scanner

    Depuis quand ImageKit permet de piloter un scanner? Des caméras oui. Mais j'ai jamais rien vu concernant un scanner.
  • 13:24 modifié #11
    dans 1288470021:


    Depuis quand ImageKit permet de piloter un scanner? Des caméras oui. Mais j'ai jamais rien vu concernant un scanner.


    IKScannerDeviceView
  • laudemalaudema Membre
    13:24 modifié #12
    dans 1288470021:

    Depuis quand ImageKit permet de piloter un scanner? Des caméras oui. Mais j'ai jamais rien vu concernant un scanner.

    Depuis Snow Leopard, et c'est beaucoup plus facile qu'avec ICAApplication
  • AliGatorAliGator Membre, Modérateur
    13:24 modifié #13
    Bah en fait ImageKit permet d'avoir une interface (UI) toute prête pour permettre à  l'utilisateur de lancer un scan (la même interface que celle présentée par "Transfert d'Images" il me semble) depuis son application, mais si on veut une interface personnalisée, ou qu'on veut faire du scan en série (comme dans mon cas justement), ImageCaptureCore permet de faire tout ça "par code" (et pas en présentant une interface toute faite et laissant l'utilisateur faire le scan manuellement) donc on a le choix de ce côté :) Mais bon je suis pas allé aussi loin moi.
  • MalaMala Membre, Modérateur
    13:24 modifié #14
    C'est cool ça! Je l'avais pas vu sur mon poste sous 10.5 et pour cause....  :P

    Des retours question mise à  jour de compatibilité par les fabricants?
Connectez-vous ou Inscrivez-vous pour répondre.