ST40 Rapport de stage professionnel. La gestion électronique des documents - PDF\nST40 Rapport de stage professionnel. La gestion électronique des documents\nDownload "ST40 Rapport de stage professionnel. La gestion électronique des documents"\n1 ST40 Rapport de stage professionnel La gestion électronique des documents Emmanuel Trivis département Génie Informatique Semestre d automne 2006 Suiveur en entreprise : Guillaume Tosolini Suiveur UTBM : Claude Renaud Odyssée Ingenierie Le Patio - Parc d'activités Le Garon 6, rue Bonnefond GIVORS France\n2 Odyssée Ingénierie : La gestion électronique des documents Emmanuel Trivis Université de Technologie de Belfort-Montbéliard, département Génie INFORMATIQUE semestre 03 Semestre d automne 2006, du 4 Septembre 2006 au 16 février Unité de Valeur ST40.\n3 Remerciements Je tenais à remercier toute l équipe d Odyssée Ingénierie pour leur accueil, les conseils qu ils m ont donné, et leur bonne humeur plus personnellement : M. Sébastien Chevalier, le directeur Technique d Odyssée, pour m avoir proposé ces sujets et permis de rejoindre le personnel durant ces semaines. M. Guillaume Tosolini, mon maître de stage, pour son suivi et sa patience. M. Olivier Lecoq pour son rôle de beta testeur, ses critiques constructives, et ses chocolats. M. Sébastien Di-Ruzza, pour ses enseignements sur l installation logiciel et réseau. M. Loïc Montagne pour son aide sur les threads. M. Jean Claude Estragnat pour son point de vue commercial. Mme. Françoise Chevalier, pour sa bonne humeur et ses fous rires au standard. Puis je voulais également remercier M. Claude Renaud, mon suiveur à l UTBM pour s être déplacé jusqu à Givors. Enfin je souhaitais féliciter les relecteurs de ce rapport, pour le temps passé à le corriger.\n4 Ce rapport est le compte rendu du travail réalisé durant le stage qui s est déroulé dans l entreprise Odyssée Ingénierie située à Givors (Rhône). Il a été réalisé dans le cadre de l unité de valeur ST40 «stage professionnel», de l Université de Technologie de Belfort-Montbéliard. Cette unité de valeur consiste en un stage de 24 semaines ayant lieu durant le troisième semestre du cycle d ingénieur des Universités de technologie. Odyssée ingénierie est un éditeur de progiciel ayant eu besoin de compétences dans le domaine de l imagerie. Ayant des acquis dans ce domaine, voulant m y perfectionner et ayant déjà réalisé un stage en laboratoire de recherche j ai voulu gouter au milieu de l entreprise. Ce stage a consisté en l implémentation sous Visual Basic 2005 d une visionneuse d image numérique, de visionneurs de documents, d outils de numérisation d image, de gestion et de recherche de documents image. Dans ce rapport nous allons tout d abord présenter le lieu d accueil puis le contexte du stage, ensuite nous en aborderons le sujet et les outils mis à disposition, dans un troisième temps nous développerons les solutions adoptées aux problèmes posés, enfin nous conclurons.\n5 Sommaire Introduction I. Présentation de l entreprise : Odyssée Ingénierie 1 1. La société 1 2. L environnement, les partenaires 1 3. Les clients 1 4. L équipe 2 5. Le service 2 II. Le produit phare de l entreprise : Acropolis 4 1. Présentation du sujet 5 2. Introduction 5 3. Contraintes associées 6 4. Plannings 7 III. Programmation 8 1. Le langage Visual Basic Le.net Framework Visual Studio Développement Introduction 14 I. La visionneuse d image 15 I. Introduction à l image L image La compression Le format tiff Les autres formats d image L objet «Image» du.net Framework Le format de pixel 17 II. Réalisation de la visionneuse Les contrôles utilisés Le déplacement de l image L affichage de l image L objet Graphics La gestion de la mémoire, stockage de l image «TIFF» La création des images miniatures La gestion des miniatures, le chemin de fer 24 Conclusion 26 II. L implémentation de fonctions à la GED 27 I. L impression Une impression intelligente L impression avec le.net Framework Les interfaces d impression 28\n6 II. La numérisation d un document La librairie WIA Structure de la librairie WIA L acquisition d une image Manipulation des propriétés de numérisation Manipulation d images 34 III. La reconnaissance optique de caractères Définition Histoire Principe de l OCR La librairie MODI Structure de la librairie MODI Le pilotage de l OCR 36 IV. L indexation Introduction Contraintes associées aux descripteurs Les expressions régulières Les arbres de recherches 38 V. La recherche full-text Principe Implémentation et option de la recherche intégrale 40 Conclusion 41 III. Les autres travaux 42 I. Le rapport d erreur Réalisation du rapport d erreur L appel du rapport d erreur 43 II. Réalisation d un contrôle d aperçu multi documents Visualisation des images Visualisation des documents pdf et textuels Visualisation des documents Offices Conclusion au contrôle 44 III. La localisation 45 IV. Les commentaires 46 V. Le déploiement 47 Conclusion 47 Bilan I. L intégration Le module courrier Le module AcroGed Conclusion à l intégration 49 II. Conclusion au travail 49 Conclusion 50 Bibliographie 51 Annexe 52\n7 Introduction I. Présentation de l entreprise : Odyssée Ingénierie 1. La société Odyssée Ingénierie est une SARL Spécialisée depuis 1992 dans la gestion de la production administrative électronique (GPAE) (Gestion applicative des flux d'information, des documents, de leurs contenus et des tâches associées), sur le marché du Secteur Public et des Entreprises. L activité de la société tourne essentiellement autour d «Acropolis "Fédération et Circulation de l Information"» disponible en client riche et Web couvrant les domaines de la gestion électronique des documents (dématérialisation de documents), du courrier, des dossiers, du protocole (GED, GEIDE, Workflow). Elle enrichit continuellement le progiciel mais fournit également le matériel, l installation, la formation, la maintenance, l assistance nécessaire à l utilisation d Acropolis. Lors du stage les développements avaient pour but de passer à une version d Acropolis tout en technologie.net, ainsi que d éditer de petits modules pouvant être commercialisés indépendamment. Figure i.1 logo de la société 2. L environnement, les partenaires La société est basée à Givors (Rhône) ville de taille moyenne (environs habitants) située à 25km au sud de Lyon. Mais possède de nombreux partenaires (DWS (région nord), Ajilon (Auvergne et Rhône-Alpes), Exakis (Aquitaine-Picardie), Saint Clair consulting (région Normandie), I-Consulting (Région Languedoc Roussillon)). La société a également développé de nombreux partenariats commerciaux ; les principaux étant avec Microsoft, IBM, Fujitsu ou encore Canon 3. Les clients L entreprise a développé 2 axes de clientèle, l industrie et le service (Velan S.A.S (Robinetterie Nucléaire et Cryogénique), Parc des expositions de Lyon), et le service public (de nombreuses mairies, conseils régionaux, et administration gouvernementale (HALDE, DIACT)). La clientèle est essentiellement française même si Acropolis offre une version anglaise. De plus l entreprise possède des clients en Martinique, et à la Réunion. 1\n8 4. L équipe Neufs personnes composent Odyssée Ingénierie, quatre d entre elles ayant une vocation commerciale, les cinq autres étant plus du coté technique. L équipe commerciale comprend le directeur commercial, la secrétaire de direction et responsable des achats, une ingénieure avant-vente et formation utilisateur (travaillant à Paris), une responsable Marketing et communication. L équipe technique comprend le directeur technique, un analyste programmeur étant en charge de l hardware, de l installation et de la formation, un ingénieur d affaire étant également chef de projet d intégration, le chef de projet responsable du développement interne de l entreprise, et d un analyste programmeur spécialisé dans le développement et le déploiement. 5. Le service Durant ce stage j étais attaché au service technique, où j étais responsable d un développement sous la tutelle du chef de projet : M. Tosolini, étant également mon maître de stage. Le service technique était composé de 2 bureaux : celui du directeur technique (M. Chevalier), et celui de M. Di-Ruzza, M. Lecoq, M. Montagne, et M. Tosolini, j étais dans dernier. Mon poste possédait le système d exploitation Windows XP Pro sp2, le.net Framework 2.0, et l outil de développement Visual Studio 2005 Pro sp1. Le service technique avait à sa disposition plusieurs postes (Windows 2000 à Vista), et de nombreux serveurs : - Serv2000 (Windows 2000) contenant : o Un SQL server 2000 o La base de données de développement (ACRODEV) et de l entreprise (ACROPRD). o Le contrôleur de domaine o La distribution client «riche» d Acropolis o - ServWeb (Windows 2003 Serveur) contenant : o Un SQL Server 2005 o La version client «léger» d Acropolis o - ServTFS (Windows 2003 Server) contenant : o SQL Server 2005 o Team Foundation Server (Contrôleur du code source) - Il y avait également la possibilité de lancer des machines virtuelles de tout genre. 2\n9 Le contrôleur de code source utilisé était Team Foundation Server 2005, un produit Microsoft. Il était hiérarchisé de la manière suivante, où le niveau inférieur ne peut accéder aux niveaux supérieurs : - Le niveau le plus bas était un dossier Component, possédant toutes les librairies non fabriquées par la société. - Puis venait le niveau Odyssée, contenant toutes les librairies de base fabriquées par la société, offrant des fonctionnalités spécifiques et donc inexploitable directement. - Enfin le niveau Acropolis renfermait les librairies et les exécutables finaux de la société. Le contrôleur possédait également un groupement spécifique aux tests, et un autre pour la version web d Acropolis, Comme son nom l indique le service technique se chargeait (à l exception du directeur technique) de tout ce qui n était ni administratif, ni commercial. Il se vouait surtout au développement. Mais s occupait aussi de la maintenance, l assistance et la formation. Les développements se faisaient pour l essentiel en Visual Basic et.net, avec un peu de SQL, de WinDev, et d ASP, puisque Acropolis gère des bases de données, est codé en WinDev pour sa version riche et en ASP pour sa version web. 3\n10 II. Le produit phare de l entreprise : «Acropolis fédération et circulation de l information» Acropolis «fédération et circulation de l information»  ou plus simplement Acropolis est un progiciel intégrant toutes les fonctions de gestion de productions administrative, gestion électronique de documents, workflow, gestion des courriers, des dossiers, des acteurs, des actions. Sa première version est sortie en Aujourd hui, est commercialisée la version 3.7. Une version 4 tout en.net est prévue pour la fin du 2 ième trimestre La structure d Acropolis est composée de 5 grands objets : les contacts (personnes), les documents, les entreprises, les actions, et les dossiers. Tous ces objets sont en relation entre eux, et avec eux même. Figure i.2 : le logo d «Acropolis» Acropolis repose sur un modèle client/serveur, c'est-à-dire que l utilisateur travaille directement sur un poste «client» et peut obtenir des informations et des utilitaires indirectement du poste «serveur». Le serveur d Acropolis a pour rôle de stocker les documents de l entreprise (images, documents office, s ), il sert également de serveur de base de données, de contrôleur d accès, d automate de traitement de tâches. Le client Acropolis possède une installation du progiciel pouvant dialoguer avec le serveur. Les 2 postes communiquent par une api ODBC, qui permet une compatibilité de communication entre n importe quels systèmes. L installation serveur d Acropolis est compatible avec n importe quel système d exploitation et de base de données (SQL serveur, oracle, PosGreSql, DB2 (AS/400)). Néanmoins le poste client ne fonctionne aujourd hui que sous des systèmes Microsoft (2000 et supérieur) puisqu il est réalisé en WinDev et.net, mais une version compatible Unix utilisant Mono est envisagée. De Plus la version client est déclinée en 2 versions. La première dite «riche» où la partie cliente d Acropolis est installé sur le poste utilisateur, une seconde dite «légère» où les interfaces utilisateurs sont accessibles par Internet via n importe quel navigateur web. 4\n11 III. Présentation du Sujet 1. Introduction. Le travail consistait à remplacer et à améliorer la fenêtre GED du logiciel «Acropolis» de l entreprise celle-ci étant visuellement et fonctionnellement obsolète. Cette fenêtre permettant la visualisation, la manipulation et la numérisation d images, offrait également quelques outils de traitement d image. Figure i.3 : l ancienne fenêtre «GED» Puis d ajouter un outil de reconnaissance optique de caractère afin d enregistrer le texte d une image, et ainsi pouvoir retrouver une image grâce à son contenu textuel. Une fois ces travaux terminés il a été demandé de réaliser un formulaire de rapport d erreur et un contrôle permettant de visualiser un grand nombre de types de documents. L implémentation des algorithmes s est faite en langage Visual Basic 2005 accompagné du Framework.NET 2.0, sous le logiciel d édition Visual Studio\n12 2. Contraintes associées Contraintes associées à la visionneuse d images La visionneuse doit accepter le plus grand nombre de format d images mais manipulera essentiellement des fichiers Tiff monochrome et multipages. Il devra également proposer : - un «chemin de fer» c'est-à-dire une zone affichant les miniatures des images du document. - Tous les outils classiques de manipulation d image comme la rotation, la copie, le facteur d éloignement (zoom), le déplacement de l image. - Un déplacement fluide par «soulevé déplacé» de l image (drag and drop avec la main). - Une numérisation par driver WIA. - Une impression «intelligente» - Une ouverture rapide des documents - La possibilité de manipuler de très grandes images (images contenant plus de 100 millions de pixels) - Une technologie compatible sous les systèmes d exploitation Windows 2000 et supérieur. Enfin il devra être décliné sous forme de contrôle et de formulaire. Contraintes Associées à la reconnaissance optique de caractères La reconnaissance optique de caractères permet d extraite le texte contenu dans une image. Cette reconnaissance doit se faire grâce à la librairie de «Microsoft Office Document Imaging», l outil de télécopie de Microsoft, proposé avec «Microsoft Office» 2003 et supérieur. L utilisation du texte de l image doit servir pour une recherche par «mots clefs» et pour une recherche «full texte». Dans le cas de la recherche par mots clefs, une correspondance est faite entre un document et une expression si cette dernière fait partie du texte de l image. Une recherche «Full Texte» cherchera la correspondance entre une expression et tous les documents d une base. Contraintes associées au rapport d erreur Le rapport d erreur doit fournir à la société assez d informations pour traiter l erreur (dont une capture d écran). Il devra être imprimable et envoyable par courrier électronique. Contraintes associées au visionneur multi documents. Le contrôle devra ouvrir les documents office Word, Excel, Visio, Pdf, image et les fichiers textes, html, xml. Le contrôle devra offrir la possibilité de verrouiller les documents ouverts afin qu ils ne puissent ni être modifiés ni être sauvegardés. 6\n13 3. Plannings Lors de l arrivée dans l entreprise, le planning n a pas été explicitement annoncé pour 24 semaines. Il a été basé pour 4 mois et a été étoffé ou précisé au fil des réunions. Planning prévisionnel Planning réel 7\n14 IV. La programmation La société possède comme logiciel de développement Visual Studio 2005 un outil puissant, et a choisi de développer son produit avec le.net Framework de Microsoft facile d implémentation et gratuit. Le langage de programmation choisi, est le Visual Basic peu complexe, aisément appréhendable et performant. 1. Le langage Visual Basic 2005 Ce langage est hérité du langage Basic utilisé sous MS-DOS et Visual Basic apparu sous Windows 3.0 ainsi, il s agit d un langage Microsoft. Couplé avec le.net Framework il permet de créer des interfaces pour les systèmes d exploitation Microsoft ou encore des pages web (ASP.NET). C est un langage orienté objet, où toutes classes sont héritées de la classe «Object» tout comme est conçu le langage Java. Il est un des langages permettant de communiquer avec le.net Framework qui lui fournit ses objets et contrôles. Ce langage prend en compte les exceptions, les threads, les génériques (Template), des Collections. En Visual basic toute la programmation se déroule dans des classes d objets. Par exemple la création d une application Windows (une fenêtre pouvant comporter des contrôles) passe par la création d un formulaire et d une classe définissant ce formulaire, héritant de la classe System.Windows.Forms.Form. Ou encore la définition d un tout nouveau contrôle passe par la déclaration d une classe héritant de System.Windows.Forms.UserControl, définissant ce contrôle... Coté langage, Visual Basic 2005 est fortement typé et ne se soucie pas de la caste (différenciation des minuscules et majuscules) Tout comme dans le Java, dans Visual Basic 2005 tout est référence, la notion de pointeur n existe pas. Ainsi dans la variable déclarée, est stocké l adresse en mémoire de l objet plutôt que l objet lui-même. Les bases et vocabulaire de la programmation avec Visual Basic 2005 La déclaration La déclaration est la procédure qui consiste à définir le nom d une variable ainsi que le type d objet auquel elle appartient. Les contrôles Les contrôles sont ceux qui rendent une application graphique dynamique, ils permettent de dialoguer entre l utilisateur et la machine. Les objets Un objet est une entité définie par une classe. Cette classe pouvant contenir des variables et des méthodes. On les appelle alors variables et méthodes membres de classe. 8\n15 L instanciation Instancier une variable consiste à attacher un objet à cette variable. Physiquement l instanciation réserve en mémoire la place que prend un objet et donne à la variable l adresse mémoire où se trouve l objet. L initialisation L initialisation d une variable ne peut se faire que si cette variable a été instanciée. Cette étape consiste alors à donner une valeur à la variable en question. Construction d une classe Le constructeur d une classe est défini par le nom de procédure «New». C est lui qui permet d instancier un objet. Variable Une variable est une boîte définie dans le but de contenir un objet. Déclarer une variable permet de définir à quel type d objet elle appartient et ainsi lui associer les méthodes propre à son type. Le nom de variable doit être en un seul mot, sans espace et caractère d opération (*, -, <, ), et doit être unique. Le dialogue entre les classes En programmation orientée objet on utilise des «méthodes» permettant d interagir entre les classes. Ces méthodes sont de plusieurs types offrant différentes fonctionnalités et avantages, elles permettent de passer des objets d une classe à l autre : on appelle alors ces objets des «paramètres» Il y a 2 types de passages : byval (par valeur) ce qui équivaut en un passage en entrée uniquement, ou lecture seule, l objet passé va être cloné lors du passage dans la méthode et le clone sera détruit lorsque celle-ci va être terminée. On passe donc ici un objet complet, l objet tel qu il est en mémoire. Byref (par référence) ce qui équivaut à un passage en entrée-sortie, ou lectureécriture. Ici on ne passe pas l objet mais la référence sur l objet. On passe donc son adresse en mémoire ce qui est plus rapide mais moins sécurisé, puisque que ces modifications dans le méthode seront conservées lorsque celle-ci va être terminée. Visual Basic offre également la possibilité de proposer un passage facultatif des paramètres. Pour cela lors de la déclaration le mot clef «optionnal» devra précéder le type de passage. Et les paramètres optionnels devront être en fin de liste de déclaration et devront obligatoirement avoir une valeur par défaut. Les méthodes Il existe plusieurs types de méthodes proposant chacune un compromis entre simplicité, sécurité, et optimisation de programmation. 9\n16 - déclaration d une procédure Une procédure est une méthode pouvant prendre une infinité de paramètres et ne renvoyant rien, sa déclaration doit commencer par sub() avec les paramètres entre les parenthèses séparés d une virgule. Par défaut ils sont passés par valeur (byval). Les procédures doivent se terminer par «end sub» - déclaration d une fonction Une fonction est une méthode pouvant prendre une infinité de paramètres et devant renvoyer un objet d un type prédéfini lors de sa déclaration. Sa déclaration doit commencer par function() avec les paramètres entre parenthèses séparés d une virgule puis de la déclaration du type renvoyé précédé du mot clef «as». Par défaut les paramètres sont passés par valeur (byval). Elle renvoie l objet par le mot clef «return» et doit se terminer par «end function» - déclaration d un accesseur Un accesseur est destiné à la manipulation des variables membres d une classe. L accesseur en Visual Basic 2005 est appelé propriété et est déclaré par le mot clef «Property» et doit ce terminer par «end property» Un Accesseur peut être de 3 types : - En lecture seule, la variable membre sera uniquement retournée, dans ce cas le mot clef «readonly» devra précéder la déclaration de l accesseur. Cette lecture se fera entre les mots clefs «Get» et «End Get» et la variable membre de la classe sera retournée en l affectant au nom de l accesseur ou par le mot clef «return». - En écriture seule, la variable membre subira une affectation par la valeur affectée au nom de l accesseur, dans ce cas le mot clef «writeonly» devra précéder la déclaration de l accesseur. Cette lecture ce fera entre les mots clefs «Set(nom_paramètre_unique)» et «End Set», le paramètre devra être affecté à la variable membre de la classe. - En lecture écriture, comme son nom l indique, l accesseur est une fusion des 2 cas précédents, aucun mot clef n est requis pour cette déclaration, et il comprendra obligatoirement les 2 types de mots clefs internes vu précédemment. 10\n17 2. Le.Net Framework Le.net Framework peut être considéré comme une couche permettant de communiquer entre le langage de programmation et le système d exploitation. Il transforme en code toutes les applications des contrôles de Windows. Il s agit d un produit gratuit de Microsoft et ne fonctionne que sur les systèmes d exploitation Microsoft. Cependant il existe des équivalents libres du.net Framework, tels que Mono, et DotGNU qui permettent d exécuter un programme.net sur des systèmes UNIX. Historiquement il est apparu dans sa première version en 2002, retouché en 2003 pour sa version 1.1, amélioré dans sa version 2.0 en 2005, et existe aujourd hui dans une version 3.0 dont les fonctions de pilotage ne sont pas encore disponibles. Le.net Framework est un outil indispensable pour programmer en.net puisqu il fournit tous les outils de la programmation, les contrôles et les bibliothèques de classes. Quelque soit l un des nombreux langages utilisés pour écrire une application.net, le code va être précompilé en un langage unique appelé MSIL (Microsoft Intermediate Language), ce MSIL étant indépendant de la configuration matériel et du système d exploitation de la machine. C est alors un code générique et portable, qui peut fonctionner quelque soit la machine à partir du moment où celle-ci possède le Framework.NET ou un équivalent. Ensuite lors de l exécution finale la code MSIL va être interprété en langage machine grâce au CLR (Common language Runtime) pour les Systèmes d exploitation Microsoft ou au Mono et Autre pour les Systèmes Unix. Figure i.4 : structure du.net Framework 2.0 Enfin le.net Framework est un langage de très haut niveau permettant très facilement de créer des applications évènementielles, c'est-à-dire des applications répondant aux actions de l utilisateur sur le programme. Il faut noter qu une documentation complète et illustrée concernant les méthodes et classes du.net Framework est disponible dans la MSDN (MicroSoft Developer Network), dont une version est consultable en ligne . 11\n18 3. Visual Studio 2005 Visual Studio 2005 est le logiciel de développement édité par Microsoft. La société odyssée-ingénierie possède la version commerciale «Team Edition for Software Developers» mais une version gratuite dite «express» existe. Microsoft a édité des suites de logiciel nommé «Visual Studio» afin de regrouper plusieurs langages de programmation dans un même éditeur, le premier étant Visual Studio 97. Visual Studio 2005 est basé sur la technologie.net de Microsoft, utilisé depuis Visual Studio.Net (2002) utilisant le Framework 1.0. La version 2005 supportant le Framework 2.0. Visual studio 2005 est un outil extrêmement puissant supportant un grand nombre de langages (VB, C#, C++, J#, jscript, ASP) tous pouvant utiliser les objets du Framework.net. Visual Basic studio permet de créer des applications exécutables (.exe) ou des bibliothèques de classes (.dll) Il propose de nombreux outils de développement très pratiques comme un éditeur d interface, par simple sélection et positionnement de contrôles, il offre également l IntelliSense (figure i.5) qui complète automatiquement les rentrées de l utilisateur et informe l utilisateur de la déclaration et la définition de chaque variable, méthode, classes... Figure i.5 : Exemple d IntelliSense Le débogueur de Visual Studio 2005 offre la possibilité de poser des points d arrêt et de naviguer aisément dans le code mais offre surtout la possibilité de changer 12\n19 le code dynamiquement. C'est-à-dire que lorsque l exécution d un programme est stoppée et passée en mode débogue, il est possible de modifier le code puis de continuer son exécution sans qu il y ait besoin de tout recompiler et de repartir du début. 13\n20 Développement Introduction La Gestion électronique des documents ou la GED (ou Gestion Electronique d'informations et de Documents pour l'entreprise, en abrégé GEIDE), représente l utilisation des moyens informatisés pour l ensemble de la gestion d un document électronique (fichier texte, tableur, image, vidéo,..) L objectif de la GED est de parvenir à constituer un référentiel de l ensemble des documents de l entreprise, afin de gérer leurs cycles de vie, de leurs créations à leurs destructions. Apparue dans les années 80 la GED doit permettent : - l acquisition des documents (par intégration, ou production). [partie 2] - l indexation des documents électronique permettant de classifier, et d optimiser la recherche. [partie 2] - le stockage (enregistrement) des documents. - la restitution des documents par une phase de recherche [partie 2], puis de visualisation soit sur support informatique [partie 1], soit sur support papier [partie 2]. - l archivage des documents. Une application GED offre des avantages sur le plan organisationnel mais également du coté financier. La recherche et la diffusion de l information deviennent extrêmement plus rapides. Le coût de l espace de stockage, de classement, de recherche et de diffusion est réduit. Tout d abord, nous étudierons les développements et notions nécessaires à la réalisation de la visionneuse, dans un second temps nous aborderons la numérisation, l impression d images, l implémentation et les idées de la reconnaissance optique de caractères entrainant la réalisation de deux buts de la GED : l indexation et la recherche, enfin nous expliquerons le contrôle multi-documents, le rapport d erreur et les tâches obligatoires de tout développement. 14\n21 Première partie : La visionneuse d image Comme il a été vu précédemment, le logiciel édité par la société «Acropolis» doit pour sa fonction GED manipuler des documents. Lorsque les documents ont un format propriétaire comme les «.doc» de Microsoft Word ou les «.pdf» d Abode Acrobat il est possible et recommandé d ouvrir les documents directement avec les logiciels éditeur, mais aujourd hui peu de formats d image sont privés, et il en existe de nombreux différents. Ainsi il sera plus simple de centrer la manipulation et visualisation de tous par un outil unique. De plus un module GED doit permettre d acquérir une image simplement, rapidement et doit permettre de visualiser, manipuler et éventuellement modifier l acquisition avant la validation de la numérisation. Dans cette partie sont introduits les concepts de base de l image, puis expliqué comment la visionneuse en elle-même a pu être créée. I. Introduction à l image 1. L image En informatique il existe deux grandes familles d images. L image matricielle (bitmap ou raster), et l image vectorielle. La première est une représentation point par point de l image. En informatique ce point est appelé pixel. L image devient alors une matrice de points de couleurs. Chacun de ces points est codé de façon binaire. L image est donc lourde en poids mais rapide de traitements. L autre type d image, l image vectorielle est définie par des formes vectorielles. Son affichage est plus lent puisque pour une image il faudra calculer les formes vectorielles, transformer l image en matrice de points, puis les afficher. Mais sa compression est plus performante. Néanmoins il est possible de compresser une image bitmap, afin de réduire son poids en mémoire, certaines de ces techniques de compression utilisent la vectorisation de l image. 2. La compression On parlera en général de compression pour les images matricielles. La compression de l image consiste à réduire le nombre de bits qui code cette image et ainsi à réduire sa taille en mémoire. La décompression quant à elle transforme un fichier d image compressé en une image. Il existe deux sortes de compression. La compression sans perte, une image compressée aura la même qualité visuelle et les mêmes informations sur chacun de ses pixel que la même image non compressée, la compression est réalisée généralement en simplifiant les redondances des informations de l image. 15\n22 La compression avec perte offre généralement de meilleures performances que la compression sans pertes. Cette fois la compression se joue également sur la qualité de l image, c'est-à-dire qu une fois une image compressée avec cette technique, elle ne pourra jamais retrouver la même qualité que l image d origine. De nombreux principes de cette compression ont utilisé les faiblesses de la vision humaine, ainsi cette compression va faire en sorte de simplifier des données sans que l œil ne s en aperçoive. L outil GED développé devra pour les 90% du temps traiter des fichiers numérisés en noir et blanc au format Tiff. 3. Le format TIFF (tagged image file format) Le format TIFF ou TIF  a été conçu dans les années 80 dans le but de créer un format pouvant être utilisé par toutes les normes d impression et d affichage de l époque, et dans le but de faciliter la diffusion des images. Au commencement il était destiné au domaine de la publication assisté par ordinateur (PAO), puis a été étendu à la CAO, la cartographie Avantage autre que sa compatibilité, le format TIFF permet de stocker dans un même fichier une multitude d images, pouvant être définies par une infinité de résolutions et une très grande diversité de formats compression, et de formats de pixel. Ainsi un même fichier TIFF pourra contenir des images monochromes (pixel noir ou blanc, codés sur 1 bit), des images en niveaux de gris, des images en couleur compressées ou non, et même des images gérant la transparence. Sur ce même principe, chaque image du fichier TIFF pourra avoir un format de compression différent allant de CCITT (format monochrome) au JPEG en passant par le LZW et le RLE Néanmoins, le.net Framework ne nous permet que de gérer les fichiers TIFF compressés aux formats RLE, LZW, CCITT3, CCITT4 et non compressés. Par exemple la tentative d ouverture d un fichier TIFF contenant une image compressée au format JPEG retournera une erreur. Malgré cela, il faudra tout de même pouvoir manipuler au moins les formats d image les plus répandus. 4. Les autres formats d image. Il existe de nombreux autres formats d image, les plus populaires étant le format JPEG (ou JPG) destiné aux images complexes (photos réelles) et offrant dans ce cas un excellant taux de compression. Les formats PNG et GIF sont destinés aux images simples (schémas, images texte, dessins simples), et ils permettent la gestion de la transparence, le premier offrant un taux de compression plus performant que le second. Ou encore le format BMP (ou bitmap) format développé par Microsoft et IBM qui contrairement aux 2 premiers formats n est pas destiné au web car il offre une compression médiocre. 16\n23 Bien évidemment, il existe bien d autres formats d image mais sont présentés ici les plus utilisés et les plus performants. Afin de pouvoir manipuler des images, il faut pouvoir les stocker à l intérieur du code dans un objet. Le.net Framework offre pour cela la classe «Image». 5. L objet «Image» du.net Framework L objet image est une classe de base fournie par system.drawing du.net Framework. Il fournit des fonctionnalités pour les classes bitmap (image matricielle) et metafile (image vectorielle non utilisé dans le projet). Dans notre cas, nous utiliserons la classe image lorsqu elle sera suffisante. Par exemple lorsque l on voudra connaître la taille, le format de pixel de l image Et nous utiliserons la classe bitmap de manipulation matricielle dans les autres cas. Cette classe offre la possibilité de manipuler les données physiques de l image (les pixels), de créer une image (avec l objet Graphics), ou encore une fonction de découpe de l image. L objet image permet de stocker une image. Il prend en compte les formats bmp, emf, exif, gif, icon, jpeg, png, tiff, et wmf. Cet objet offre de nombreuses informations sur les propriétés de l image, ses dimensions, sa résolution, son format d image et de pixels. Il propose également des fonctions de rotation, de chargement, de sauvegarde, de manipulation des frames, de miniaturisation L objet bitmap offre en plus la possibilité de créer de toutes pièces ou bien depuis une ressource une image. Il propose des méthodes de manipulation de l image, de ses pixels, de sa taille, de verrouiller une image en mémoire (pour optimiser sa lecture/écriture). 6. Le format de pixel Dans le développement suivant on parlera souvent de format de pixel. Un pixel est la contraction de l anglais «picture élément», c est le plus petit point pouvant être dessiné par un support numérique (écran, imprimante, scanner ). Un format de pixel est caractérisé par le nombre de bits qui code ce pixel. Dans notre cas le plus souvent on parlera de 4 types de code : code sur 1 bit qui donnera une image en noir et blanc, le code sur 8 bits qui donnera une image en niveau de gris, le code sur 24 bits donnant une image en couleurs «vraies», et le codage sur 32 bits donnant une image en couleurs «vraies» avec gestion de transparences. 17\n24 II. Réalisation de la visionneuse Plusieurs études ont été faites pour réaliser cette visionneuse. Pour être utilisable commercialement l ouverture et la manipulation de l image devait être rapide et fluide, de plus son déploiement ne devait nécessiter que le.net Framework 2.0. Une des principales difficultés a été le fait que le.net Framework n optimisait pas l affichage des images : il fallait pour que l affichage soit fluide et rapide qu elle soit en 32 bits par pixels. Ainsi l affichage de très grandes images provoquait très facilement un dépassement de capacité et donc un arrêt du programme. Une très grande image sera composée de 100 millions de pixels, cette valeur peut paraître énorme mais puisque la société travaille avec des industries, la numérisation d un plan A0 atteint très facilement cette limite. Une autre difficulté a été la création des miniatures qui du fait de sa durée de traitement rendait l utilisation de la visionneuse impossible, il a fallu alors utiliser le principe du thread qui permet d effectuer des taches «parallèlement» à d autres (ce principe sera approfondi par la suite). La visionneuse étant une application Windows nous allons voir les principaux contrôles qui la composent. Et par la même occasion introduire ces contrôles. La fenêtre Ged 1. Les contrôles utilisés Le contrôle principal de la fenêtre est une picturebox cet élément permet l affichage des images ou des objets Graphics. Il est situé dans un des panels du split container. Ce split container est un contrôle possédant 2 panels séparés par un séparateur ( splitter ). Un panel est un conteneur permettant de grouper d autres contrôles et ainsi de pouvoir les identifier. Ce type de contrôles est souvent utilisé pour diviser un formulaire par fonction. Un panel peut posséder des barres de défilement «automatique» géré automatiquement par le.net Framework, ces barres sont actives si un élément d un Panel n est pas dans le zone d affichage de celui-ci. La manipulation directe, dans le code, des barres de défilement est très complexe. La Picturebox possède également des barres de défilement mais sa taille étant fixe dans le Panel, les barres de défilement automatique se sont avérées inutilisables. Il a alors fallu implémenter la manipulation d autres barres. Le Splitcontainer s est imposé comme un outil idéal pour séparer la visualisation des miniatures de l image, de l image elle-même. Enfin la visionneuse comprend une barre de menu, d outils et d état. Ces barres ont le comportement et l aspect du système d exploitation lanceur. Ces éléments gèrent les boutons et les autres éléments qu ils contiennent, les dépassements de capacité et son déploiement dans le contrôle. Elle possède également des contrôles non visibles directement, les menus contextuels (menu affiché lors d un clic droit), une boite de dialogue d impression permettant de sélectionner les périphériques d impression, et un élément contenant le document à imprimer. 18\n25 Figure : fenêtre de la visionneuse, chemin de fer caché, et fenêtre volante d aperçu des miniatures. Les Autres fenêtres De nombreuses autres fenêtres ou «boites de dialogue» sont appelées par la visionneuse, la plupart sont composées de Boutons, de TextBox, et de PictureBox utilisées en guise d illustration. Cependant le formulaire d aperçu avant impression est plus complexe, et mérite d être détaillé. La fenêtre d aperçu avant impression Cette fenêtre est composée de deux éléments, le premier étant une barre d outils comportant plusieurs boutons et Splitbouttons (combinaison entre un bouton et un menu déroulant), et d un Textbox. Le second élément étant un PrintPreviewControl. Ce contrôle permet de voir un document tel qu il sera en sortie d impression. Il offre également de nombreux outils de visualisation comme le zoom ou encore l affichage de plusieurs pages en même temps. Ce contrôle affichera un document contenu dans un contrôle Printdocument. Pour modifier l affichage il faudra fermer la fenêtre puis l afficher de nouveau. Ce contrôle offre l avantage d être automatisé mais il supporte mal la manipulation des grosses et/ou nombreuses images puisqu il va charger toutes ces images en mémoire même celles non n affichées. L aspect graphique de la visionneuse mis au point, intéressons nous maintenant à un point du cahier des charges, la manipulation de l image. 19\n26 2. Le déplacement de l image Le déplacement de l image dans un outil de visualisation est un point très important. Le déplacement doit être rapide, fluide et agréable. Pour cela il a été implémenté toutes les méthodes classiques de navigation dans une fenêtre. Autre que le déplacement avec les barres de défilement et la molette de la souris, il a été utilisé le glisser-déplacer (drag and drop) de l image. Le drag and drop Le glisser déplacer de l image a été une des principales contraintes du cahier des charges. Une telle manipulation permet de déplacer une image lorsque l on fait un clic gauche sur l image, puis que l on déplace la souris en maintenant le bouton gauche enfoncé. Le déplacement de l image se fait tout le long de la pression sur le bouton gauche et le déplacement de la souris. L image se déplacera alors d autant que le déplacement de la souris. Cette fonctionnalité permet de bouger de l image très facilement et très agréablement. Dans le programme la position de la souris est enregistrée lorsque le bouton gauche est pressé (lors de l événement mousedown) sur la PictureBox de l image. Puis lorsque la souris bouge au dessus de l image (évènement MouseMove de la PictureBox) si le bouton gauche de la souris est cliqué, on calcule le vecteur défini entre la position précédente et la position courante de la souris. L abscisse de ce vecteur est ajoutée à la valeur de la barre de défilement horizontal de la PictureBox, l ordonnée à celle de la barre verticale. Puis on initialise la position précédente à la position courante de la souris. L évènement MouseMove sera rappelé à chaque déplacement de la souris sur la PictureBox. Il faut noter que ce déplacement se fait en modifiant les valeurs des barres de défilement de la PictureBox. En effet tous les déplacements sont faits grâce à ces deux barres. La gestion des barres de défilement de la PictureBox Les barres de défilements de la PictureBox sont entièrement paramétrables. Il est possible de désigner : les bornes minimales et maximales, le pas d incrémentation, la valeur que prendra la barre de défilement Si cette valeur dépasse les bornes, le système renvoie une exception, les bornes ont du être gérées par une fonction vérifiant la validité de la valeur à insérer. La modification des valeurs de ces deux barres de défilements modifie la position de l image. Tous les déplacements de l image reviennent à modifier la position de ces deux barres de défilements, car la position de l image dans la PictureBox est calculée à partir de ces valeurs. Suite à chaque changement de valeur de ces barres, l image est affichée. 20\n27 3. L affichage de l image L image est affichée dans une PictureBox. La taille et la position de ce contrôle sont fixes. Ainsi pour faire bouger l image, on déplace la position d affichage de l image. Dans tous les cas, toute l image est affichée même si elle n est pas entièrement visible à l écran. N afficher que la partie visible imposerait de découper cette partie à chaque rappel d affichage, Une telle opération est bien plus couteuse que d afficher toute l image. Les coordonnées d affichage de l image (ximg, et yimg) valent : ximg = (-limg + lpict ) / 2 - valeurbarreh yimg = valeurbarrev avec valeurbarreh la valeur de la barre de défilement horizontale, et valeurbarrev la valeur de la barre de défilement verticale. (ximg, yimg) limg PictureBox de l image lpict Zone de l image Ymin = 0 himg hpict Ymax = himg-hpict Xmin = (-limg + lpict)/ 2 Xmax = (limg - lpict) / 2 Figure : Position de l image dans la PictureBox L affichage de l image est appelé dans l évènement Paint de la PictureBox. Cet évènement est appelé à chaque fois que la PictureBox est redimensionnée ou redessinée, lorsqu une fenêtre passe dessus par exemple. Il est possible d accéder à cet évènement par la procédure Refresh du contrôle PictureBox. L affichage ne se fait pas en affectant l objet image de la PictureBox mais grâce à l objet Graphics de cette même PictureBox. 21\n28 4. L objet Graphics L objet Graphics permet de dessiner des traits, des formes vectorielles, du texte formaté ou d afficher et de manipuler des images. Cet objet représente une surface de dessin et est utilisé pour créer, afficher ou imprimer du texte ou des images. Cet objet utilise l API «Microsoft Windows GDI+» qui permet d utiliser l objet sur un écran ou une imprimante. Cet api n accède pas directement au matériel graphique mais interagit avec les drivers des périphériques. L objet Graphics possède de nombreuses méthodes de dessin consistant pour la plupart à dessiner ou remplir une forme vectorielle, ou une image dans une zone définie par un rectangle passé en paramètre. Cet objet ne possédant pas de constructeur, il ne peut être instancié que lorsque l on récupère l un des paramètres d un événement Printpage ou Paint en contenant un initialisé, ou par la procédure CreateGraphics de certains contrôles. Par exemple si l objet Graphics est instancié par le paramètre PaintEventArg de l évènement d affichage Paint d un contrôle PictureBox, dessiner dans l objet Graphics revient à dessiner dans la PictureBox. Il en sera de même d instancier l objet par la procédure CreateGraphics de la même PictureBox. L instanciation à partir d un objet Bitmap permettra de dessiner dans cette image, et celle à partir du paramètre de l événement d impression, de dessiner sur la page de sortie d imprimante. Nous avons vu la réalisation graphique de la visionneuse, comment déplacer une image, et comment l afficher. Il reste néanmoins deux points à traiter : celui du stockage de l image et par la même occasion de la gestion mémoire, et celui des miniatures et du chemin de fer. 5. Gestion de la mémoire, stockage de l image «Tiff» L affichage à l écran se fait généralement en 32 bits ; ainsi afficher à l écran une image codée en en monochrome (1bit par pixel) reviendra à stocker une image 32 fois plus grande en mémoire. Comme nous l avons vu dans la partie 1.1.3, le format Tiff est un des rares formats à proposer une gestion multipages et multi résolutions. Cela permet alors de stocker un grand nombre d images sous le même objet «Image». Une image de type Tiff multipage est appelée «frame» ou encore «page». Pour sélectionner une frame d un objet Image la procédure SelectActiveFrame est suffisante. Cette procédure prend en paramètre une FrameDimension (pour spécifier la dimension à sélectionner, ici une «Page») et le numéro (rang) de la frame à sélectionner, allant de 0 à NBframe -1. La frame sélectionnée devient alors l image courante de l objet image. Cette particularité permet un gain important de mémoire et de temps de gestion des multiframes, mais est assez longue d exécution. Les manipulations de l image sont définies dans un objet «ImageScannee» implémenté pour l occasion. 22\n29 Dans le cas d une image existante, les manipulations se font à partir d un fichier unique et le changement des frames de l image se fait grâce à la fonction SelectActiveFrame. Dans le cas où l image est en cours de numérisation, chaque page est un fichier. Les procédures de manipulation générale de l image doivent être changées. En effet une image numérisée a de grandes chances d être retraitée par la suite (suppression des pages blanches, remplacement d une page numérisée ), et la sauvegarde d une telle image sous un fichier unique imposerait de réenregistrer de nouveau toutes les pages de l image à chaque manipulation. Le temps du procédé est acceptable dans le cas d une petite multipage, mais devient intolérable dans le cas contraire. Appliquer la stratégie d une image numérisée à une image déjà existante n est également pas possible, car l ouverture de l image existante demanderait de créer un fichier par page, et donc de trop nombreux calculs pour les très grandes et très nombreuses images. Lorsqu une image est numérisée, elle est enregistrée et son chemin est ajouté à l objet ImageScannée, la miniature lui correspondant est créée, et les informations concernant le nombre de pages du document sont mises à jour. La sélection des frames de l image se fait alors par ouverture du fichier correspondant à la frame. 6. La création des images miniatures La miniature d une image est retournée à l aide de la fonction de l objet image «GetThumbernailImage» qui convertira obligatoirement le format de pixel d une image en format 32 bits pargb, et qui fera perdre la propriété multi-page de l objet Image. Cette méthode appliquée sur un fichier image multi-page miniaturisera uniquement sur la frame courante. La création des miniatures pour une image à plusieurs frames suit la procédure suivante : La frame à miniaturiser est sélectionnée, l image courante (donc la frame sélectionnée) est miniaturisée, puis cette miniature est affectée à l image de la PictureBox créée dynamiquement à cet effet. Ces opérations sont peu coûteuses en mémoire, puisque les miniatures sont par définition petites, mais est très coûteuse en temps de calcul, puisqu elle combine une sélection de frame, opération déjà longue, à une miniaturisation. Ces opérations prennent en moyenne 0,5s par image. Lorsque le fichier Tiff ouvert contient plus de 20 pages cette opération de miniaturisation est irréalisable, car elle va rendre inutilisable la visionneuse pendant un temps trop long. C est pour cela qu elle a été exécutée dans un processus parallèle, un Thread (Annexe 1). Ce thread étant mis à la priorité la plus basse (lowest) afin de permettre une manipulation fluide de l image affichée à l écran. Les miniaturisations des images permettent de créer un «chemin de fer» une bande permettant un aperçu des pages du document. Ce chemin de fer possède de nombreuses fonctionnalités et est un outil d aide à la visualisation devenu indispensable. 23\n30 7. La gestion des miniatures, le chemin de fer De nos jours tous les plus grands logiciels de visualisation de document présentent un «chemin de fer» c'est-à-dire une zone réservée à l affichage des miniatures des pages du document. Ce chemin de fer permet d avoir une vue d ensemble du document, il facilite la navigation entre les miniatures (surbrillance de la miniature courante, changement de page par sélection de la miniature) et dans l image (possibilité de zoom sur une zone de l image par sélection d un cadre sur la miniature, coloration de la zone de l image affichée). Il offre également de nombreuses options de manipulation. Il est possible de changer la taille des miniatures, l orientation et la taille du chemin de fer, de le masquer et de l ajuster à la taille des miniatures. Enfin il est possible de passer en mode «diaporama» et d afficher les miniatures des premières pages des documents image contenus dans un dossier. La création du chemin de fer La création des miniatures des chemins de fer se fait dynamiquement, car on ne connait pas à l avance le nombre de miniatures qu il y aura dans le chemin de fer. C'està-dire que la place des miniatures ne sera pas délimitée à l avance et qu il faudra alors les définir dans le code. Une miniature sera composée d une PictureBox contenant l image d une page miniaturisée, d un Label contenant le numéro de la page dans le document et d un Panel contenant ces deux éléments. Manipulation sur le chemin de fer et les miniatures Le chemin de fer n est pas une fonction gadget, c est un réel outil. Il doit donc être manipulable et fonctionnel. Dans ce but, de nombreuses fonctionnalités lui ont été ajoutées. Tout d abord les barres de défilement permettent de naviguer très facilement dans le chemin, puis les boutons qu il contient offrent la possibilité d accéder à la miniature de tête et de queue, précédente et suivante, courante. Enfin la taille du chemin est manipulable par simple glisser-déplacer du séparateur du SplitContainer, il peut être masqué et ajusté par clic sur bouton et ajustable par double clic sur le séparateur. Enfin l orientation du chemin de fer peut être changée. Les miniatures offrent elles aussi de nombreuses fonctionnalités : elles possèdent un menu contextuel propre, le clic sur une d entre elles permet de la définir comme image courante. Un cadre dans la miniature permet de savoir où se situe la visualisation de l image, il est possible de définir cette zone qui deviendra alors la zone affichée. Trois tailles différentes peuvent définir les miniatures. Lorsque la visionneuse est utilisée en mode d acquisition, il est possible de déplacer une page par déplacement de la miniature dans le chemin de fer. La mise en forme des miniatures dans le chemin de fer se fait grâce à la méthode «MiseEnFormeMiniature». Cette procédure range les images de façon ordonnée. Dans le cas où le chemin de fer est vertical, les images sont rangées en priorité en ligne : si 24\n31 une miniature dépasse du Panel on l affiche sur la ligne suivante et on continue l affichage sur cette ligne. Dans le cas où le chemin de fer est horizontal, les miniatures sont rangées en ligne quelque soit la place qu il existe en hauteur. Ces choix on été faits compte tenu du sens de lecture. Le changement d orientation du chemin de fer Dans un souci de préférence d utilisation, il est possible de changer l orientation du chemin de fer. Il peut être soit vertical à gauche, soit horizontal en bas. Le changement est possible grâce à la propriété «Orientation» du Splitcontainer (control contenant le chemin de fer et la PictureBox ) prenant en paramètre un énuméré (System.Windows.Forms.Orientation) représentant les valeurs «horizontale» et «verticale». Le changement d orientation change la disposition des panels, mais pas comme il nous conviendrait dans l utilisation de la visionneuse. Si le chemin de fer est vertical à gauche, mettre l orientation du panel à «horizontal» le met horizontal en haut, et inversement pour qu il soit horizontal en bas en mode «horizontal» il faut qu il soit vertical à droite en mode «vertical». Ainsi il a fallu à chaque changement d orientation inverser les contenus des deux panels du SplitContainer. Toutefois, un aspect de clignotement est apparu, dû au déplacement des miniatures. Ainsi afin de rendre cette opération la plus fluide possible, avant de faire les changements, le chemin de fer est masqué, puis la PictureBox et les barres de défilement du Panel principal sont déplacées. Le Panel allant recevoir les miniatures est masqué, les miniatures sont déplacées enfin le Panel des miniatures est ajusté au besoin. Figure : fenêtre de la visionneuse, chemin de fer horizontal et petites miniatures. 25\n32 Conclusion sur la réalisation de la visionneuse La fenêtre de visualisation des images a été faite de la manière la plus ergonomique et plus performante possible. Des icônes et des descriptions ont été attribuées aux boutons et autres contrôles provoquant des actions. La manipulation du chemin de fer et des miniatures, le déplacement de l image permettent une navigation et une visualisation très fluide et très simple. Cette fenêtre GED offre une allure beaucoup plus jeune et agréable que l ancienne. Néanmoins pour obtenir l appellation de fenêtre GED elle doit offrir d autres fonctionnalités que la visualisation. 26\n33 Deuxième partie : L implémentation de fonctions à la GED Pour que la visionneuse décrite dans la partie 1 puisse être utilisée comme application GED, il faut qu elle offre des outils autres que la visualisation. Nous décrirons tout d abord deux instruments indispensables à la GED l impression puis l acquisition de documents, puis nous verrons trois autres outils qui vont booster les performances de la GED et simplifier la vie de l utilisateur c'est-à-dire : la reconnaissance optique de caractères (OCR), puis l indexation automatique et enfin la recherche intégrale des documents : deux techniques dépendantes de l OCR. I. L impression 1. Une impression intelligente L impression est gérée par le programme, pour imprimer une image avec le.net Framework il faut la dessiner sur une page virtuelle, cela permet une très grande liberté vis-à-vis de l impression. Le module GED précédant ne proposait que l impression d un document ou d une page du document sans que l on puisse avoir un aperçu avant impression ou même modifier les paramètres d impression. Alors, l implémentation de l impression a dû se faire de manière intelligente. L idée d imprimer une ou toutes les pages a été gardée et un aperçu avant impression a été créé. En plus il a été rendu possible de piloter l impression, la taille des mages l orientation de sortie, mais surtout de pouvoir imprimer plusieurs pages par feuilles (de 1 à 16) pour minimiser la consommation de papier et d encre, et d utiliser plusieurs feuilles pour une page (double ou quadruple la taille de la sortie classique) ce qui permet d obtenir de grand format. Enfin le pilote WIA a permis d offrir un assistant d impression pour les systèmes possédant XP sp1 et supérieur. Toutes ces implémentations ont été faites de la manière la plus ergonomique possible dans un souci de simplicité et d efficacité. 2. L impression avec le.net Framework 2.0 Le.net Framework ne propose pas réellement d outils gérant l impression automatiquement il faut toujours dessiner manuellement les formes ou le texte dans des rectangles . L impression d un document n est possible que par l implémentation d un contrôle PrintDocument. Ce contrôle possède 4 événements d impression : - BeginPrint appelé avant l impression. - QueryPageSetting appelé avant chaque changement de page. - PrintPage fonction principale imprimant une page du document. - Endprint appelé à la fin de l impression. 27\n34 Afin d imprimer quelque chose, il faut dessiner dans l objet Graphics donné par l élément PrintpageEventAgrs passé en paramètre de l événement PrintPage. Dessiner dans ce Graphics revient alors à dessiner dans un rectangle de la taille de la page de sortie (cf partie 1.2.4) L impression d un texte utilisera la méthode Graphics.Drawstring, et d une image la méthode Graphic.Drawimage. L appel de l événement PrintPage permet de dessiner uniquement dans une page. Pour imprimer plusieurs pages il suffit de dessiner une page dans cet événement, puis de changer de page, en mettant à vrai la méthode Hasmorepages de l objet PrintDocument. Cette mise à vrai permet de rappeler l évènement PrintPage lorsque celui-ci est terminé. Il s agit donc d une boucle sur lui-même. Ainsi l évènement doit prendre en compte l avancement de l impression pour ne pas se retrouver dans le cas d une boucle infinie. Une fois les documents «dessinés» ils sont contenus dans le graphique de l objet PrintDocument. Il ne reste alors plus qu à choisir le périphérique d impression et la mise en page associée. Le périphérique d impression est défini par un objet PrinterSetting, il permet d accéder à toutes les propriétés du périphérique d impression. Pour le sélectionner il est possible d utiliser la boite de dialogue du.net Framework prévue à cet effet (PrintDialog) ou bien obtenir la liste des périphériques du système courant, définie dans la liste d objets System.Drawing.Printing.InstalledPrinters. Les propriétés de la page : sa taille, ces marges, son orientation, sa couleur sont définit dans un objet PageSettings, situé dans PrintDocument.DefaultPageSetting (pour les pages par défaut d un document), ou PrintDocument.PageSetting (pour la page en cours d impression), la propriété de la page sont modifiables directement et par l interface PageSetUp. 3. Les interfaces d impression L impression d un document image a nécessité la création de deux interfaces graphiques. Celle permettant l aperçu avant impression et celle permettant la mise en page. L aperçu avant impression Il est à noter qu une interface d aperçu avant impression (PrintPreviewDialog) est déjà implémentée dans le.net Framework. Mais cette interface n est pas pilotable et son look est désuet. Ainsi un formulaire a été implémenté offrant d autres petites fonctionnalités et pouvant bien sûr être piloté. Ce formulaire offre la possibilité : - de changer de page par boutons et saisies clavier, - d afficher à l écran 1, 2 (1 ligne), 2 (1 colonne), 3, ou 4 images - d aligner une image à gauche ou au centre de la page - de zoomer par 2 boutons et un menu déroulant 28\n35 - d imprimer par un bouton. - D accéder à la fenêtre de mise en page et de gestion des marges et du format de page de sortie afin de voir le résultat de la modification instantanément dans l aperçu. La fenêtre de mise en page Cette fenêtre permet de gérer le nombre d images à imprimer par page en sortie, ainsi que l orientation d impression. Une image illustrera les choix de l utilisateur. Il pourra être imprimé plusieurs images sur une même feuille (pour minimiser le nombre de feuilles en sortie), mais également une image pourra être imprimée sur plusieurs feuilles (pour maximiser la taille de l image imprimée) L orientation pourra être portrait (coté le plus grand de la feuille verticale) ou paysage (coté le plus grand de la feuille horizontale). 29\n36 II. La numérisation d un document : La Librairie Microsoft Windows Image Acquisition (WIA) La numérisation d un document ne peut se faire qu en pilotant des drivers d acquisition. Actuellement il en existe 3 grandes sortes : les drivers Twain, ISIS, et WIA. Néanmoins les 2 premiers sont spécifiques à chaque marque et chaque modèle de scanneur, alors que le troisième peut être dit «générique» L avantage d utiliser des drivers WIA au lieu de drivers Twain ou ISIS est la compatibilité de fonctionnement du driver, puisque la façon de piloter un scanneur sera la même pour tous scanneurs configurés en WIA. Alors que les autres types de drivers sont spécifiques à la marque et au model du scanneur, il faudrait donc implémenter l acquisition pour chaque modèle et chaque marque. Hors actuellement Acropolis acquiert ses images grâce aux drivers Twain ou ISIS pour des constructeurs spécifiques et des modèles déterminés, ce qui est contraignant commercialement, et à l installation puisque des drivers spécifiques devront être installés. Ainsi l acquisition par pilote WIA s impose. 1. La librairie Microsoft Windows Image Acquisition (WIA) La librairie Windows Image acquisition  a été développée en 2000 par Microsoft pour les systèmes d exploitation Windows Millenium et supérieurs. Elle est à la fois un driver et une API Windows. Ce driver permet de gérer des appareils d acquisitions, comme les appareils photos, les scanneurs, ou encore les caméras, de manière «plug and play» et sans que l on ait à installer de drivers spécifiques. Son architecture est construite sur la couche haute de la librairie STI (Still Image Architecture) qui permettait déjà la détection, l installation, le support d évènements, et un driver de communication de bas niveau. Initialement l implémentation de l api WIA v1 est assez complexe et est manipulable uniquement dans les langages C et C++. En 2002 Microsoft écrit une librairie «Windows Image Acquisition Automation Library v2.0» remplaçant la précédente et étant pilotable en langage Visual Basic mais n étant supportée que sur un Système d exploitation Windows XP SP1 et supérieur. L api fournit des outils basic de manipulation et d acquisition d image, ainsi que des interfaces utilisateurs. 2. Structure de la librairie WIA La librairie contient de nombreux objets étroitement liés entre eux mais l implémentation du projet n utilise que les principaux objets : ceux symbolisant l appareil d acquisition (objet Device), les propriétés de numérisation (objets Item, Property), l image numérisée (objet ImageFile). Il est également utilisé un objet 30\n37 permettant d afficher les interfaces utilisateur de la librairie (objet CommonDialog), et les objets permettant la manipulation de l image (objets ImageProcess, Filter, FilterInfo). La librairie comprend d autres outils non utilisés lors du stage comme l objet Vector (une image créée «à la main»), l objet VideoPreview (permettant l affichage d une video en streaming), l objet rational Etudions de plus près les objets permettant d acquérir et de manipuler une image. L objet Device Il représente une connexion active à un périphérique d acquisition. A partir de cet objet il est possible d obtenir la plupart des propriétés du scanneur et les propriétés de numérisation (propriétés de l objet Device, et de l objet!item du Device). Il existe plusieurs moyens d instancier un objet Device, la plus logique dans le cadre du stage était de manipuler l objet CommonDialog (gestionnaire des interfaces) afin de laisser à l utilisateur le choix de la sélection du périphérique de numérisation. L objets Item L objet item contient les «options» de numérisation d un périphérique d acquisition. Il permet de numériser une image, d accéder et de modifier les propriétés de numérisation. Ces propriétés sont directement modifiables dans le code, et peuvent être instanciées par manipulation de l objet CommonDialog (gestionnaire des interfaces). Les objets Properties et Property L objet Properties est une structure de données contenant des objets de type Property. Les objets Property sont toutes les propriétés définissant les options de numérisation. On les trouve dans les objets Item et Device. Une propriété est caractérisée par une valeur, un nom, un type, un numéro (PropertyID), et des bornes à sa valeur. Seule la valeur de la propriété est accessible à la lecture. L objet imagefile Il contiendra une image. Ses méthodes et ses propriétés sont comparables à celles de l objet Image du.net Framework. Cette image pourra être directement obtenue par numérisation ou encore être chargée depuis une image déjà enregistrée. Les objets ImageProcess, FilterInfos, FilterInfo, Filter, Filters Ces objets servent à la manipulation «physique» de l image. L objet ImageProcess permet d appliquer des modifications à une image de type ImageFile. Elle contient 2 objets. FilterInfos structure de données contenant des FilterInfo et une autre structure de données Filters contenant des objets Filter. 31\n38 Les Filter sont des filtres, donc des fonctions de modification, applicable à une image, les Filterinfo fournissent des informations sur les filtres pouvant être appliquées à une image. L objet Commondialog : Le gestionnaire des interfaces La librairie WIA fournit des interfaces verrouillées proposant à l utilisateur d effectuer des opérations de numérisation et d impression. Ces interfaces sont celles qu offre également l assistant d impression et de numérisation de Windows XP, et vista. Ces fenêtres appartiennent à l objet WIA Commondialog ShowSelectDevice Cette fenêtre permet à l utilisateur de choisir son périphérique (configurer avec un driver WIA) de numérisation. showitemproperty Cette fenêtre offre la possibilité de sélectionner : Sur le premier onglet : - Le nombre de bit par pixel utilisé pour numériser l image - la résolution de numérisation en pixels par pouce (en gérant les bornes de résolution de l appareil) Sur le second onglet - l activation ou non de la numérisation en recto verso Fenêtre showitemproperty ShowSelectItem Cette fenêtre permet l appel de la fenêtre décrite précédemment et permet la sélection du format de page à numériser. ShowDeviceProperty Cette fenêtre est celle des propriétés du scanner, elles ne sont pas modifiables ShowWizzardPrinter Cette procédure appelle le même assistant d impression que Windows. Il permet de sélectionner le nombre de copies en sortie, et offre la possibilité de mettre en forme l impression. ShowWizzarScanner Cette procédure appelle le même assistant de numérisation que Windows, il n a pas été utilisé pour la réalisation du projet. 32\n39 Etudions maintenant comment manipuler ces objets afin de numériser ou de manipuler une image. 3. L acquisition d une image Une image ne peut être contenue que dans un objet Imagefile. Il existe deux méthodes pour lancer l acquisition d une image : - par une méthode de l objet Item du périphérique - par une méthode de l objet CommoDdialog prenant en paramètre l Item du périphérique. Cette méthode offrant une barre de progression sur l avancement de l acquisition. Ces deux méthodes retournent un Objet générique pouvant être converti en ImageFile. 4. Manipulation des propriétés de numérisation Lors de l acquisition d un document, la librairie WIA permet de manipuler le format de pixel de numérisation (choix entre : couleur, niveau de gris, ou en noir et blanc), la taille de la page en entrée, la résolution en pouce par pixel (ppp ou dpi en en anglais), la luminosité, et le contraste de numérisation de l image en sortie, enfin l activation ou non du mode duplex (numérisation des deux cotés de la feuille). Chacun de ces paramètres est manipulable directement dans le code, il est défini dans les propriétés (objet Property) de l item du premier rang des items du périphérique de numérisation et dans les propriétés du périphérique de numérisation. Pour accéder à la propriété souhaitée, il faut connaître son numéro d identification (son propertyid), et modifier la valeur de la propriété possédant cet identifiant. '_scanner étant une référence sur le périphérique de numérisation ' «3088» numéro de la propriété : "Document-Handling-Select" correspondant au mode duplex du périphérique Dim ThisProperty as wia.property = CType(_scanner, WIA.Device).Properties("3088") 'modeduplex est vrai si la numérisation va être faite en duplex modeduplex = (ThisProperty.Value.Equals(5)) Exemple a : lecture des propriétés de périphérique, numérisation en duplex '_scanner étant une référence sur le périphérique de numérisation ' «4103» numéro de la propriété : "data types" correspondant au format de pixels de numérisation Dim ThisProperty as wia.property = CType(_scanner, WIA.Device).Items(1).Properties("4103") 'met la valeur en noir et blanc ThisProperty.Value = 0 Exemple b : modification des propriétés des items du périphérique, passage en noir et blanc 33\n40 5. Manipulation d images La librairie WIA fournit de nombreux outils de manipulation d image : la rotation, le redimensionnement, la superposition, la découpe, la modification des pixels, la création de fichiers multipage, la compression d images Ces manipulations sont réalisables par application de filtres sur une image. L application de filtres fonctionne de la manière suivante : - Un objet ImageProcess permettant l application du filtre est instancié. - Un objet ImageFile contenant l image allant subir la modification est initialisé. - L identifiant d un nouveau filtre est ajouté à la collection de filtres de l objet ImageProcess. - Le filtre ainsi créé est initialisé suivant la valeur souhaitée pour la modification. - Enfin la fonction Apply de l objet ImageProcess est appliquée sur l ImageFile et retourne alors un nouvel objet ImageFile contenant les données souhaités. les variables imagefiletmp2 et imagefiletmp étant 2 objets imagefile instanciés 'déclaration de l'objet permettant la manipulation Dim imgpro As New WIA.ImageProcess 'ajout du filtre permettant d'ajouter une page dans un fichier image multi page. imgpro.filters.add(imgpro.filterinfos("frame").filterid) 'ajout de l'image imgpro.filters(imgpro.filters.count).properties("imagefile").value = imagefiletmp2 'ajout du filtre permettant la déclaration d'un format de compression imgpro.filters.add(imgpro.filterinfos("convert").filterid) 'ajout du type de format de compresison imgpro.filters(imgpro.filters.count).properties("formatid").value= WIA.FormatID.wiaFormatTIFF 'application des filtres sur l'image '(ajout de la frame "imagefiletmp2" au fichier tiff composé de l'image"imagefiletmp") imagefiletmp = imgpro.apply(imagefiletmp) Exemple2.2.5.a : application de filtres, création d un TIFF multipage 34\n41 III. La reconnaissance optique de caractères : La librairie «Microsoft Office Document Imaging» Un des buts du stage a été de trouver et de piloter une librairie gratuite permettant la reconnaissance optique de caractères. Cette reconnaissance permet de détecter tout le texte contenu dans une image de manière automatique puis de pouvoir éditer ce texte. Avec cette technique, le texte sauvegardé est associé à l image d origine, ceci permet par recherche textuelle de retrouver l image contenant une expression donnée ou encore de pouvoir déterminer la nature de l image. Cette reconnaissance a donc pour but unique de détecter le texte sans souci de mise en page et des formes de l image, on l appelle alors : OCR léger. 1. Définition La reconnaissance optique de caractères ou en anglais Optical Character Recognition (OCR), est une application informatique ayant pour but de transcrire du texte manuscrit ou dactylographié contenu dans une image numérique en du texte informatique éditable. Ce texte éditable pouvant alors être exploité, modifié et sauvegardé 2. Histoire L idée de la reconnaissance optique de caractères est apparue aux Etats-Unis dans les années 50 lors de propositions, par la NASA, de processus de gestion automatique de documents. David Shepard un cryptanalyse a été le principal précurseur. Les premières ventes de machines à reconnaissance optique de caractères ont été faites à partir de l année 1955 au magazine Readers Digest, puis à de nombreuses compagnies pétrolières pour lire des imprimés de carte de crédit. De nos jours la reconnaissance optique de caractères est devenue indispensable dans le domaine du tri postal. 3. Principe de la reconnaissance optique de caractères La principale technique utilisée pour la reconnaissance consiste à détecter les différents signes de l image puis de les comparer à une bibliothèque de symboles. Certains logiciels d OCR ont acquis de l intelligence artificielle, en ayant d une part des dictionnaires syntaxiques (vérifiant la cohérence des mots), et grammaticaux (vérifiant la cohérence des expressions), et d autre part pour la reconnaissance d écritures manuscrites acquièrent la mémoire des typologies des utilisateurs, dans ce cas ils seront de plus en plus performant au fil du temps. Lors de ce stage les recherches pour intégrer une librairie se sont très vite orientées vers les outils proposés par Microsoft la société étant partenaire gold. Il est alors apparu que la librairie MODI utilisée par l outil de numérisation de la suite Office 35\n42 proposait une OCR performante, rapide, facilement pilotable et suffisante. Le choix d utiliser cette librairie fut vite fait. 4. La librairie «Microsoft Office Document Imaging» La librairie Microsoft Office Document Imaging 11.0 (MODI)  est apparue avec le logiciel «Microsoft Office Document Imaging» disponible dès 2002 dans la suite office XP mais ce n est qu avec office 2003 que ses fonctionnalités sont devenues manipulables. Il s agit d une bibliothèque d objets manipulable par tous langages capables d intégrer les composants COM. Hormis la reconnaissance optique de caractères la librairie MODI permet l affichage, l enregistrement, l impression, la recherche de textes dans un document image pouvant être multipage mais de type TIFF et MDI (format multipage de la librairie) uniquement. Néanmoins il ne permet pas l acquisition d une image, ne garde pas les mises en forme lors du traitement par OCR, et enfin il ne convertit pas directement l image en un document texte au format Word (ce que fait le logiciel Microsoft fournissant MODI). La librairie propose aussi un contrôle ActiveX permettant de visualiser et manipuler les images du document MODI. Enfin cette librairie ne permet pas de reconnaître du texte manuscrit mais utilise des dictionnaires syntaxiques et grammaticaux. 5. Structure de la librairie MODI Afin d effectuer la reconnaissance optique de caractères il est utilisé 4 objets. L objet père de la librairie contenant le document image (l objet Document), la structure de données Images représentant toutes les pages du document, l objet définissant une page (objet Image) et l objet Layout possédant le résultat de la reconnaissance de caractères. 6. Le pilotage de la reconnaissance optique de caractères. Le pilotage de la reconnaissance avec la librairie MODI est assez simple, et reste relativement rapide compte tenu du travail effectué. Pour lancer une reconnaissance sur un document image il faut créer un objet Document de la librairie MODI et l instancier avec l image souhaitée contenant le texte à reconnaître. La reconnaissance peut se faire par la méthode OCR, soit sur tout le document (Ocr sur toutes les pages du document), soit sur une image de la collection Images du document (Ocr sur une seule page du document). Cette méthode prend en paramètres la langue de traitement (définissant les dictionnaires utilisés), un booléen définissant l autorisation de rotation de l image pour la reconnaissance, et un booléen autorisant l ajustement de l alignement de l image). 36\n43 Un événement de l objet Document permet de visualiser la progression de l avancement du traitement par OCR. Le texte reconnu est contenu dans la variable text de l objet Layout des images traitées par Ocr. Annexe 2. Exemple de reconnaissance optique de caractères IV. L indexation 1. Introduction Dans Acropolis, un document peut être associé à un ou plusieurs descripteurs. Un descripteur étant un mot ou un ensemble de mots décrivant le document. Cette fonctionnalité permet une recherche extrêmement rapide d un document si l on connaît les descripteurs pouvant lui être associé. Ces descripteurs sont référencés dans ce que l on appelle des «thésaurus», sorte de dictionnaire de mots. Enfin un thésaurus est associé à un type de document. La numérisation d un document associée à la Reconnaissance Optique de Caractères permet de déterminer tous les descripteurs d un thésaurus présents dans un document, et de les associer automatiquement à celui-ci. Cette opération est appelée indexation, et est réalisable par recherche de présence de descripteurs dans le texte. Pour que cette recherche soit la plus optimale possible la définition d un descripteur va être contrainte. 2. Contraintes associées aux descripteurs Les descripteurs doivent posséder une casse spécifique. Ils devront être écrits en majuscules, uniquement avec des chiffres, des lettres et des espaces, sans caractère spéciaux, accent ou cédille. Ces caractères codés avec la table ASCII sont donc en décimal : 32 (espace), et compris de 65 à 90 (0 à 9), et de 48 à 57 (A à Z). Enfin ils pourront être un mot unique ou une chaine de caractères contenant plusieurs mots séparés uniquement par des espaces. Ainsi puisque les descripteurs seront de 2 types, il sera utilisé 2 méthodes différentes afin d optimiser les performances. Les expressions régulières permettront de retrouver des descripteurs comportant des espaces dans un texte inchangé, et une recherche par arbre binaire équilibré sera utilisée pour rechercher un mot unique, ce qui nécessitera la construction de l arbre et permettra la suppression des occurrences et diminuera ainsi la taille de la zone de recherche. 37\n44 3. Les expressions régulières Définition Les expressions régulières (également appelées Regex ou Regexp)  sont une traduction controversée de "regularexpressions" que les puristes appelleront les expressions rationnelles. Les expressions régulières sont un outil très puissant permettant de vérifier la syntaxe d'une chaîne de caractères. Plus précisément, c'est vérifier que la chaîne de caractères à examiner respecte un motif ou une série de motifs. Dans notre cas on vérifie que les motifs correspondants à une expression sont présents dans un texte. L implémentation La notion d expression régulière est nouvelle dans le.net Framework 2.0, les motifs de recherche seront contenus dans un objet «Regex», la validation de la présence du motif dans un texte se fera dans un objet «Match» retourné par la fonction Match de l objet Regex. Si la fonction Success de l objet Match instancié retourne «vrai», la chaine recherchée sera présente dans le texte. Définition 4. Les arbres de recherche Un arbre en informatique est une structure de données, c est un graphe possédant une seule source et ne comportant aucun cycle (aucun membre connexe). Un arbre est composé de Nœuds reliés entre eux par une connexion à direction unique. Un Nœud est dit «parent» d un Noeud lorsqu il le relie, et est dit «fils» lorsqu il est relié (par un nœud parent). Le nœud ne possédant pas de parent, est le plus haut et est appelé «racine». Les éléments les plus bas, ceux ne possédant pas de fils sont appelés «feuilles». La «profondeur» d un nœud est le nombre de nœuds parents le séparant de la racine. Un arbre binaire est un arbre ne pouvant posséder que 2 fils par nœud. Un nœud sera donc une structure possédant : un élément contenant la valeur du nœud et deux pointeurs sur deux autres nœuds fils, le «fils gauche» et le «fils droit». Un arbre équilibré est un arbre possédant des sous arbres équilibrés. Dans notre cas l arbre sera complètement équilibré, c'est-à-dire que tous les nœuds (hormis les feuilles et les parents des feuilles) doivent posséder 2 fils. Et que toutes les feuilles doivent avoir, à une hauteur près, la même profondeur. 38\n45 Un arbre binaire est dit trié dans le cas où tout nœud d un arbre gauche est de valeurs inférieur à celle de ces parents. Et que tout noeud d un arbre droit est de valeur supérieure à celle de ces parents. Figure : un arbre binaire de recherche trié Dans notre cas nous utilisons un arbre binaire équilibré trié. La recherche dans un arbre binaire trié La recherche dans un arbre binaire trié est très simple : pour un arbre on compare la valeur cherchée à la racine. Si elles sont égales la valeur est trouvée, si la valeur cherchée est inférieure à la racine, on reproduit l opération sur le sous arbre gauche, si elle est supérieure on reproduit l opération sur le sous arbre droit. La complexité de recherche moyenne dans notre arbre binaire équilibré est alors en Olog2(N) où N est le nombre de mots de l arbre. Car au pire cas, le mot se trouve sur une feuille de l arbre, donc sur la plus grande profondeur, mais puisque le nombre de mots stockés dans l arbre double à chaque profondeur, la profondeur maximale de l arbre sera de log2(n) La méthode de recherche par arbre est légèrement plus rapide d exécution que la recherche par expression régulière puisse qu elle ne garde qu une seule occurrence des mots du document. Mais globalement l indexation d un document reste extrêmement rapide. Dans le cas d un document de 8000 mots (25 pages) et d un thésaurus d environ 300 mots, l indexation prend moins des 200 millisecondes. Dans le cas critique d un thésaurus de expressions et d un document de 150 pages (50000 mots) le temps d indexation essentiellement par expression régulière reste inférieur à 10 secondes. 39\n46 V. La recherche full-text La recherche «fulltext» ou «recherche intégrale» permet de retrouver un document en recherchant une expression contenue ou non dans celui. Cette recherche intégrale est permise par l exécution d une requête SQL disponible uniquement sur un serveur de base de données contenant SQL Server.  1. Principe Un processus résidant va collecter tous les contenus des fichiers pouvant être indexés. Cette recherche du SQL Server permet d indexer les fichiers textes classiques mais également certains types de fichiers binaires formatés comme les documents Offices Word, Excel, Adobe Acrobat Une fois ces textes indexés ils vont être intégrés dans une structure de texte intégrale, reposant sur une théorie complexe . Pour rechercher une information il ne restera plus qu à exécuter une requête de recherche dans cette structure à l aide du mot clef CONTAINS. Figure : fenêtre de recherche full texte 2. Implémentation et option de la recherche intégrale La recherche permet d utiliser tous les caractères spéciaux et opérateurs logiques du langage SQL sur les chaînes. L utilisateur pourra directement entrer une requête contenant ou non des caractères spéciaux et des opérateurs, ou bien entrer des mots dans des champs correspondant à une condition, ce qui va par la suite créer une requête. Le caractère espace est le caractère séparateur des mots et des opérateurs logiques. Le caractère spécial étoile ( * ) symbolise n importe quelle chaîne de caractères sans espace. 40\nLes options d impression\n1 Les options d impression Les options d impression Sommaire 1 Introduction... 2 2 Le principe d impression en Windows Form... 2 2.1 Approche de l objet PrintDocument... 2 2.2 Principe de l impression...


Stéphane Plaza : vendez votre maison avec son agence immobilière - Côté Maison- eva-mebel.info\nCar la vieille école des agents immobiliers voudrait que les nouveaux acheteurs fassent les travaux à leur goût et que les vendeurs vendent en l'état. Oui mais voilà. Quand vous achetez une maison, vous n'avez qu'une envie : poser vos cartons et vous installer. Les anglo-saxons qui déménagent souvent que nous l'ont bien compris et il ne leur viendrait pas l'idée de mettre en vente ou en location un bien qui ne puisse être occupé immédiatement.\nAvec sa baguette magique (n'y voyez aucune allusion), Stéphane Plaza aidé des décoratrices Sophie Ferjani et Emmanuelle Rivassoux redonne un coup de jeune aux habitations au goût discutable pour environ 5% du prix de la maison, net vendeur. Coupant souvent court à toute négociation pour d'éventuelles rénovations. Chaque maison se retrouve alors avec sa petite touche de couleur taupe ou lin (couleur consensuelle), son petit vase à fleurs et la bonne odeur de s qui sort du four. Et devant les caméras, le couple heureux se retrouve avec une proposition d'achat. La magie de la télévision !\nFace au succès de l'émission, qui est pour beaucoup dans la personnalité de l'animateur qui ne rate jamais une occasion de se froisser un muscle ou de laisser tomber une statue de dieu grec en albâtre, M6 vient d'investir la coquette somme de 3,6 millions d'euros dans le réseau d'agences que Stéphane Plazza vient de lancer. Joli cadeau ! Car l'animateur de Maison à vendre réussit le tour de force de n'apporter que son image. Enfin, une image valorisée à 400 000 euros par le commissaire aux apports () . Car ces agences déclineront les recettes qui ont fait le succès de l'émission de télévision. Tout serait parfait dans le meilleur des mondes... si la télévision reflétait la réalité. Une fois de , la production s'en arrange quelque peu. En effet, même si elle le précise, le tarif des travaux présentés ne concerne que les matériaux et non pas les honoraires du home stager, ni la main d'oeuvre des artisans. Stéphane Plaza saura-t-il convaincre les vendeurs de réaliser les travaux eux-mêmes ? Leur proposera-t-il un package avec services et travaux compris avec les honoraires de ventes ?\nToutes les infos sur les agences immobilières :\nBonsoir, j' ai besoin des conseils de Stéphane Plaza pour vendre mon appart et acheter en même temps une petite maison. Je n'ai pas de crédit mais je suis en invalidité et reconnue handicapée adulte mais je ne sais comment faire.... SVP répondez moi Maryse Irigoyen 16 avenue Jean Darrigrand 64100 Bayonne. Tel 0616126682. Merciiiii\nBonjour, Malheuresement nous n'avons pas le de Stéphane Plaza, désolé. Bonne continuation.\nBonne chance aux agents immobiliers pour faire faire des travaux aux propriétaires à des tarifs proches de ceux de l'émission (autant dire : presque rien). La aussi réside la différence avec le monde anglo-saxon : ici bas les artisans coûtent très chers, une conséquence de notre (très cher également) "modèle social" qui nous enfonce un peu tous les jours la tête sous l'eau.\nMonsieur Stéphane Plaza , le Zorro des maisons à vendre , vous allez dorénavant accumuler les Zéros...En euros....Bien vu , du fait , de votre Notoriété Acquise....(!)....\nAgence Plaza av de la Motte Piquet à 30m du Champ de Mars, les appartements les chers de Paris, ce n'est pas le genre home staging.\nLe home staging de Plaza est du tape à l'oeil pas cher et assez ordinaire. ne pas confondre avec une rénovation. Si vous achetez une résidence principale, faites vos travaux vous-même. Si vous achetez pour investir, achetez rénové (pour la -value en cas de revente.


La pluie, un fléau à Kinshasa | Politico.cd\nLa pluie, un fléau à Kinshasa\n19 février 2020 à 11:55\nMadame la pluie est au rendez-vous depuis la nuit du mardi à mercredi 19 février sur toute la ville de Kinshasa. Il a plu tellement que beaucoup des gens ne sont pas sortis pour leurs bureaux, travail, gagne-pain, etc. La raison est connue, les avenues sont inondées des eaux.\nSi ailleurs après la pluie vient le beau temps, ce n’est pourtant pas le cas à Kinshasa la belle. La commune qui porte le même nom n’est pas si différente d’un vaste marécage. Au rond point des huileries, c’est le catastrophe indescriptible. Les eaux sont en furie et en débandade. Elles ont submergé le macadam, toutes les avenues ressemblent à des lacs, des eaux stagnantes.\nLes quelques caniveaux sont en deçà des eaux, à tel enseigne qu’il est dangereux de rouler de peur d’y tomber sans le savoir. Du rond point des Huileries jusqu’à l’avenue Bokasa, c’est un vaste fleuve. Des parcelles entières sont transformées en véritables digues. Les avenues Kabambare et Kasa-Vubu sont presqu’impraticables. Des voitures sont englouties, des motards tombent dans les caniveaux, parce que sans repère.\nLes eaux sont montées à plusieurs mètres de hauteur. Le danger que courent les chauffeurs de tomber dans les terrassiers est énorme, parce que les eaux ont pris de l’ascendance. Toutes les avenues ne peuvent supporter les vagues des eaux qui viennent dans tous les sens. Les piétons qui prennent le risque de longer une avenue s’engagent à leurs risques et périls.\nMême spectacle partout\n#RDC " @moise_katumbi est à la base de la forte pluie d'aujourd'hui à Kinshasa pour discréditer le pouvoir, dénoncent les Wumelistes " 👇👇👇👇 pic.twitter.com/rJeE6hZfrS\n— Lwarhiba Maitre (@LwarhibaM) February 7, 2017\nLa commune voisine de Lingwala n’est pas épargnée. Les rues sont inondées des eaux. La situation est identique dans presque d’autres communes. C’est ici l’occasion d’interpeler le Ministère de l’urbanisme et habitat. Kinshasa n’est pas urbanisée. Les quelques caniveaux perçus ça et là ne répondent pas aux normes. Comme conséquence, quand il pleut, les eaux s’affolent sans être canalisées.\nSur certaines avenues il faut attendre deux à trois heures pour voir les eaux de pluie diminuer un peu. Un handicap terrible pour une population vivant de la débrouillardise au quotidien. L’Hôtel de Ville essaie tant soit peu de curer quelques caniveaux, mais pas assez. La rivière Kalamu a fait ses dégâts.\nLes déchets plastiques sont des entraves à la bonne circulation des eaux, obligées de déferler. Il y a eu semblant d’interdiction d’utilisation d’emballages et bouteilles en plastique, mais c’était pour une courte durée. Les entreprises qui en fabriquent fonctionnent à temps plein, sans être inquiétées.\nA certains endroits, les tas des immondices sorties des caniveaux ont déjà fait des mois, les bétons qui couvraient les caniveaux sont éparpillés, attendant d’être remis à leurs places.\nIl y a également la population qui jette les immondices dans les avenues. Ceci empêche le passage des eaux quand il pleut. Les Chefs des quartiers et des rues ont renoncé à leur devoir de sensibilisation et de rééducation de la masse sur la protection de l’environnement.\nL’Etat est donc appelé à mobiliser tous les services concernés pour garder l’environnement sain, en curant régulièrement les caniveaux et en construire d’autres. Faire payer des amandes aux jeteurs des immondices sur la place publique, découragerait les récalcitrants. Vider aussi à temps les dépotoirs des déchets. C’est de cette manière que Kinshasa peut être appelée de nouveau » Kin la belle ».\nut 19 février 2020 à 14:09\tAt\t14 h 09 min\nTout ceci est une conséquence directe de la mauvaise urbanisation de la ville de Kinshasa.Pourquoi cette situation n’arrive jamais dans la commune de Gombe? Parce qu’ancienne ville blanche, elle a été aménagée comme une ville européenne remplissant toutes ses fonctions urbaines. Mais quand il s’est agi de mettre en place la cité africaine, l’habitat a été laissé à la charge des citoyens à qui on donnait juste de la terre (les parcelles), le reste dépendant des moyens de chacun, et cette mise en place de l’habitat auto-promu se poursuit jusqu’aujourd’hui. C’est ainsi que l’on a dans toutes ces communes, un habitat de mauvaise qualité » SANS ASSAINISSEMENT » . Assainir une ville revient à évacuer correctement ses eaux usées (eaux issues des w.c., des cuisines, est des douches) et ses eaux pluviales. Ce qu’il faut, c’est construire des grands caniveaux (des égouts) d’au-moins un mètre de large et un mètre de haut, couverts, le long de tous les grands axes de circulation, sur lesquels toutes les parcelles des riverains doivent être branchées pou l’évacuation de leurs eaux usées, et donner une pente transversale d’au-moins 2 % aux chaussées pour l’évacuation des eaux pluviales par ces mêmes caniveaux. En même temps, remplacer des maisonnettes basses de très mauvaise qualité par des immeubles collectifs faciles à assainir. Il faut arrêter de jouer avec des mots en appelant assainissement le balayage des rues par le biais des O.N.G. fantoches en s’endettant inutilement auprès des bailleurs de fonds étrangers. Le salongo des samedi ne constitue pas non plus l’assainissement, mais un coup d’arrêt à l’économie en obligeant les commerçants et autres artisans d’arrêter leurs activités pendant plusieurs heures, leur causant ainsi une baisse de leurs chiffres d’affaires. Voilà ce qu’il faut faire en priorité pour avoir des villes dignes de ce nom.


Brazzaville-Voiries urbaines : les automobilistes et riverains déplorent l'inertie des autorités municipales\nBrazzaville-Voiries urbaines :…\nBrazzaville-Voiries urbaines : les automobilistes et riverains déplorent l’inertie des autorités municipales\nD’un quartier à un autre, certaines artères de la capitale congolaise restent impraticables à cause des nids de poules mettant à mal la circulation des personnes, et des biens. Les automobilistes et riverains déplorent l’inertie des autorités municipales.\nC’est la ‘‘jungle routière », un véritable chemin de croix pour les usagers de la route.\nSuite aux nombreux échecs dans l’entretien routier à Brazzaville, le gouvernement devrait peut être associé aussi le génie militaire dans ces opérations pour le désenclavement de certains quartiers de la capitale.\nIl est indéniable que la question de la dégradation du réseau routier continue d’être une préoccupation pour le Président de la République, Denis Sassou N’Guesso.\nEn février 2021, il a effectué une visite inopinée des voiries urbaines de la ville de Brazzaville, notamment la bretelle rond-point de la frontière-Mairie de M’Filou. Visite qui traduisait sa volonté de voir aboutir, dans les délais, l’ensemble de ces chantiers initiés par le gouvernement.\nLes différents chantiers de réhabilitation des voiries urbaines de la capitale et ses environs, lancés par le gouvernement, traduisent la détermination du Président de la République de voir, d’une part, la qualité de vie des populations s’améliorer et, d’autre part, les principales artères de la capitale se désengorger, en rendant la circulation fluide, de jour comme de nuit.\nPour les populations de Brazzaville, l’urgence commande que les actions du gouvernement soient opérationnelles le plus vite possible, et que les routes avancent.\nL’ex-Premier ministre Matata Ponyo sollicite l’intervention de Christophe…


Mali : la mobilisation continue en faveur du journaliste français Olivier Dubois, retenu en otage depuis 6 mois | TV5MONDE Afrique\nMali : la mobilisation continu...\nMali : la mobilisation continue en faveur du journaliste français Olivier Dubois, retenu en otage depuis 6 mois\nCapture d'écran / TV5 MONDE\n8 octobre 2021 à 13:22\nLe 8 avril 2021, le journaliste français Olivier Dubois était enlevé à Gao, dans le nord du Mali, par des djihadistes. Depuis, il est toujours détenu par le Groupe de soutien à l'islam et aux musulmans. Ses proches veulent garder espoir. Ce vendredi 8 octobre, treize grande villes françaises vont déployer une banderole de soutien sur leurs mairies.\n"Ca fait six mois qu'on est sans nouvelles de mon frère à part la vidéo du 5 mai, 184 jours sans nouvelles: rien sur son état de santé, rien sur sa situation, ses conditions de captivité, c'est beaucoup", explique Canèle Bernard dans un entretien accordé à l'AFP. Dans cette vidéo, le journaliste français annonçait son enlèvement par le Groupe de soutien à l'islam et aux musulmans (GISM), principale alliance djihadiste au Sahel, liée à Al-Qaïda.\nAidés par l'ONG Reporters Sans Frontières (RSF), la famille d'Olivier Dubois ne cesse de se mobiliser depuis pour la libération du journaliste de 46 ans. Treize villes françaises vont se mobiliser ce vendredi, en déployant des banderoles de soutien sur leurs mairies.\n(Re)voir : Le journaliste Olivier Dubois en otage depuis 100 jours au Mali : "Maintenir la flamme de l'espoir"\n"La mobilisation de toutes ces villes, un peu partout dans le pays, de Marseille où vit une partie de sa famille, à Fort-de-France en Martinique, d’où Olivier est originaire, est un formidable message de soutien" envers le journaliste "pris en otage alors qu’il faisait son travail", déclare à l'AFP le secrétaire général de RSF Christophe Deloire.\nOlivier Dubois est le seul otage français actuel connu dans le monde. Il travaillait au Mali depuis 2015 en tant que journaliste indépendant. Il a couvert la tourmente sécuritaire traversée par le pays pour des titres de presse français, comme le quotidien Libération ou le magazine Le Point Afrique.


La cité des esclaves T2 – SambaBD\nScénariste :Shinichi Okada\nDessinateur : Hiroto ooishi.\nGenre : Fantastique de 184 pages.\nDe nouveaux personnages rejoignent la danse macabre du SCM dans ce second tome. Shiori, la nouvelle venue qui travaille dans un cabaret, acquiert le SCM de la part d’un client qui joue un double jeu. Zennichi la brute sans pitié et même Zushiomaru…le chien. Tout le monde est lié d’une façon ou d’une autre. La toile se resserre autour des personnages, les maîtres comme les esclaves, semblent être sous le joug d’une entité machiavélique qui tire les ficelles dans l’ombre et s’amuse de la débâcle réjouissante que provoque le SCM\n« Grandes distributions de mandales à prix cassés. »\nCe tome 2 se révèle toujours aussi jouissif. Il faut dire qu’à la base, le postulat de départ n’est pas banal. Un appareil, le SCM, qui permet à son utilisateur suite à un duel d’avoir un esclave à sa botte .Mais attention, les coups tordus sont légion et c’est avec un certain bonheur qu’on les découvre. Un manga un peu dans l’esprit du Death Note, on reçoit en pleine face le coté retord des personnages .Perso, j’apprécie, ça fait plaisir un manga qui ose sonder au plus profond l’âme tordue de notre humanité. Et plus, tout ce grand puzzle arrive à s’imbriquer à un moment ou à un autre .Bref, le scénario est vraiment bien pensé et imaginatif.\nCoté dessin, rien à y redire, c’est du bon, un trait expressif, dynamique et fluide.\nPour public averti bien entendu .\nSPIROU HORS SERIE: « JE SUIS CHARLIE ! »\nUn commentaire sur “La cité des esclaves T2”\nÇa a l’air chaud du c* non ? 😉\nNon, le sexe est plus suggéré qu’autre chose , ici , c’est plutôt les bas instincts qui sont à l’honneur mais aussi l’intelligence pour les contrecarrer . En plus , pour le moment , c’est toujours aussi surprenant , j’aime bien ne pas savoir où l’on va.