on squatte l'ocr d'hawaii !
DESCRIPTION
How to implement a small OCR on Windows Phone with Hawaii services ! This is the slides of my session in the event "La communauté Windows Phone squatte Microsoft".TRANSCRIPT
ON SQUATTE
L’OCR
D’HAWAII !
SQUATTEUR : SAMUEL BLANCHARD
Samuel BLANCHARD
Communautaire
Rédacteur/Modérateur chez Développez
Rédacteur pour Programmez!
Fondateur Club SP et .NET Ouest
Professionnel
Responsable Développement &
Innovation chez Naviso (blog.naviso.fr)
2
Samuel BLANCHARD
3
Projet HAWAII (1)
4
Projet Microsoft Research :
Gratuit mais…
Seulement pour les écoles
Apps non commerciales
Projet HAWAII (2)
5
Services dans les nuages !
OCR (reconnaissance de caractères)
Relais de message
Sauvegarde de settings
Voix vers texte
…
Projet HAWAII (3)
6
Services accessibles facilement !
SDK Windows Phone (mais pas tous les services)
Architecture REST pour le reste
Téléchargement & ID
7
SDK Windows Phonehttp://research.microsoft.com/en-us/um/redmond/projects/hawaii
L’id à partir de Windows Live IDhttp://hawaiiguidgen.cloudapp.net
Intégration du SDK
8
Répertoire de baseC:\Users\VotreNomUtilisateur\Documents\Microsoft Research\Cloud Services SDK for WP7\1.0.8
Projets du SDK : code + binClientLibraryBase : accès à Hawaii (indispensable)
OcrClientLibrary : accès à l’OCR d’Hawaii (selon services)
Appel de l’OCR
9
string hawaiiAppId = HAWAII_ID; //identifiant Hawaiibyte[] bufferImage; //image JPEG à envoyer
OcrService.RecognizeImageAsync(hawaiiAppId, bufferImage,(result) =>{
// récupération du résultat});
L’image à envoyer
10
Format JPEG
70-80% compression
640x480 (meilleur résolution)
Taille max 1.5Mo
Taille font : 30px (idéal) à 100px (max)
Image contrastée
Source de l’image (1) :
11
CameraCaptureTask + PhotoChooserTask
retaille de l’image en 640x480
un seul essai
Format JPEG (attention aux formats dans PhotoChooserTask)
camera = new CameraCaptureTask();camera.Completed += new EventHandler<PhotoResult>(completed);camera.Show();
Source de l’image (2) :
12
PhotoCamera
taille de l’image en 640x480
Flux vidéo
Format Brut (pixels)
cam = new Microsoft.Devices.PhotoCamera(CameraType.Primary);camBrush.SetSource(cam); //fixe la source du VideoBrush
pixels = new int[(int)cam.PreviewResolution.Width * (int)cam.PreviewResolution.Height];
cam.GetPreviewBufferArgb32(pixels);
Améliorons l’image :
13
bmp = bmp.Contrast(0, 0.25f);
Contraste
Article de René Schultehttp://channel9.msdn.com/coding4fun/articles/PicFx--Windows-
Phone-Picture-Effects-Application--Part-1
Workflow d’acquisition
14
Lancement de la caméraPhotoCamera
AutoFocus
Récupération des données caméra GetPreviewBufferArgb32
Envoi vers l’OCR OcrService.RecognizeImageAsync
Traitement des résultats
Démo Carte de visiteMA SUPER DÉMONSTRATION
15La communauté Windows Phone Squatte Microsoft
Résultats de l’OCR
16
Des blocs de texte
Des mots
Une position et taille par mot
Une orientation
Optimisation des résultats
17
Phrase : assembler les mots sur la même ligne (position Y)
Détecter le type de la phrase (Web, Adresse mail,…)
Code GetOcrLinesMA SUPER DÉMONSTRATION
18La communauté Windows Phone Squatte Microsoft
Sauver les contacts
19
Création de contact SaveContactTask
SaveContactTask task = new SaveContactTask();
foreach (var line in this.OcrLines){line.SetToContactTask(task);
}
task.Show();
Conclusion
20
Résultat satisfaisant si image de
qualité.
Aide à la saisie
Intégration facile
Manque un OCR Offline
Licence trop restreinte !
Programmez ! n°153
21
Remerciements
22
23
Des questions ?
24
Merci à tous !