65
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 69700 GIVORS France [email protected]

ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

  • Upload
    others

  • View
    27

  • Download
    1

Embed Size (px)

Citation preview

Page 1: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

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

69700 GIVORS France

[email protected]

Page 2: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

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 2007.

Unité de Valeur ST40.

Page 3: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

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.

Page 4: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

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.

Page 5: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

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 2005 8

2. Le .net Framework 11

3. Visual Studio 2005 12

Développement Introduction 14

I. La visionneuse d’image 15 I. Introduction à l’image 15 1. L’image 15

2. La compression 15

3. Le format tiff 16

4. Les autres formats d’image 16

5. L’objet « Image » du .Net Framework 17

6. Le format de pixel 17

II. Réalisation de la visionneuse 18 1. Les contrôles utilisés 18

2. Le déplacement de l’image 20

3. L’affichage de l’image 21

4. L’objet Graphics 22

5. La gestion de la mémoire, stockage de l’image « TIFF » 22

6. La création des images miniatures 23

7. La gestion des miniatures, le chemin de fer 24

Conclusion 26

II. L’implémentation de fonctions à la GED 27 I. L’impression 27 1. Une impression intelligente 27

2. L’impression avec le .net Framework 2.0 27

3. Les interfaces d’impression 28

Page 6: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

II. La numérisation d’un document 29 1. La librairie WIA 29

2. Structure de la librairie WIA 30

3. L’acquisition d’une image 33

4. Manipulation des propriétés de numérisation 33

5. Manipulation d’images 34

III. La reconnaissance optique de caractères 35 1. Définition 35

2. Histoire 35

3. Principe de l’OCR 35

4. La librairie MODI 36

5. Structure de la librairie MODI 36

6. Le pilotage de l’OCR 36

IV. L’indexation 37 1. Introduction 37

2. Contraintes associées aux descripteurs 37

3. Les expressions régulières 38

4. Les arbres de recherches 38

V. La recherche full-text 40 1. Principe 40

2. Implémentation et option de la recherche intégrale 40

Conclusion 41

III. Les autres travaux 42 I. Le rapport d’erreur 42

1. Réalisation du rapport d’erreur 42

2. L’appel du rapport d’erreur 43

II. Réalisation d’un contrôle d’aperçu multi documents 43 1. Visualisation des images 43

2. Visualisation des documents pdf et textuels 43

3. Visualisation des documents Offices 44

4. 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 48 1. Le module courrier 48

2. Le module AcroGed 48

3. Conclusion à l’intégration 49

II. Conclusion au travail 49

Conclusion 50

Bibliographie 51

Annexe 52

Page 7: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

1

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 19000

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.

Page 8: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

2

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.

Page 9: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

3

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.

Page 10: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

4

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 » [07] 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 1996. Aujourd’hui,

est commercialisée la version 3.7. Une version 4 tout en .net est prévue pour la fin du

2ième trimestre 2007.

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, e-mails…), 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.

Page 11: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

5

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 2005.

Page 12: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

6

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.

Page 13: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

7

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

Page 14: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

8

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.

Page 15: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

9

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.

Page 16: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

10

- 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.

Page 17: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

11

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 [09].

Page 18: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

12

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

Page 19: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

13

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.

Page 20: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

14

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.

Page 21: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

15

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.

Page 22: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

16

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 [03] 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.

Page 23: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

17

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.

Page 24: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

18

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.

1. Les contrôles utilisés

La fenêtre Ged

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.

Page 25: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

19

Figure 1.2.1 : 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.

Page 26: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

20

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.

Page 27: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

21

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.

Figure 1.2.3 : 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.

Zone de l’image

(xImg, yImg) lImg

hImg hPict

lPict

Ymax = himg-hpict

Xmax = (lImg - lPict) / 2

Xmin = (-lImg + lPict)/ 2

Ymin = 0

PictureBox de l’image

Page 28: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

22

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.

Page 29: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

23

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.

Page 30: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

24

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

Page 31: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

25

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 1.2.7 : fenêtre de la visionneuse, chemin de fer horizontal et petites miniatures.

Page 32: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

26

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.

Page 33: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

27

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 [05].

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.

Page 34: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

28

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

Page 35: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

29

- 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).

Page 36: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

30

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 [02][10] 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

Page 37: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

31

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.

Page 38: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

32

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

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.

Fenêtre showItemProperty

Page 39: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

33

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 2.2.4.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 2.2.4.b : modification des propriétés des items du périphérique, passage en

noir et blanc

Page 40: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

34

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

Page 41: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

35

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

Page 42: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

36

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) [06] 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).

Page 43: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

37

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.

Page 44: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

38

3. Les expressions régulières

Définition

Les expressions régulières (également appelées Regex ou Regexp) [04] 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.

4. Les arbres de recherche

Définition

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.

Page 45: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

39

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 3.5.4 : 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 18000 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.

Page 46: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

40

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. [01]

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 [01].

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 2.5.2 : 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.

Page 47: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

41

Les caractères spéciaux « guillemet » permettent de rechercher une expression

contenant des espaces, « X Y » retournera vrai pour les documents contenant

l’expression X et à sa suite séparée d’un espace, l’expression Y.

Si X et Y sont deux expressions :

L’opération X AND Y retournera vrai pour les documents contenant les expressions X

et Y.

L’opération X OR Y retournera vrai pour les documents contenant l’expression X ou

l’expression Y, ou les expressions X et Y.

L’opération X AND NOT Y retournera vrai pour les documents contenant l’expression

X et pas l’expression Y.

L’opération X NEAR Y retournera vrai pour les documents contenant l’expression X et

Y et que ces deux expressions sont rapprochées physiquement dans le texte de la

recherche.

Conclusion Nous avons vu dans cette partie comment ont été réalisées l’impression,

l’acquisition, la reconnaissance de caractères, l’indexation et la recherche de documents.

Les fonctions d’impression et d’acquisition sont directement disponibles et

pilotables dans la visionneuse de la partie 1. La reconnaissance optique de caractères et

l’indexation ne peuvent pas être directement utilisées depuis la fenêtre GED, ces deux

étapes sont implémentées, en dur dans le code, suivant les cas et les droits accordés à

l’utilisateur. Enfin la recherche intégrale de documents ne sera pas disponible dans cette

fenêtre.

Tous ces modules couplés à la visionneuse ont été réalisés afin de simplifier

l’utilisation et d’optimiser les performances de la GED. Ils seront destinés à remplacer

la fenêtre GED actuelle.

Page 48: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

42

Troisième partie : Les autres travaux

La réalisation des travaux des parties 1 et 2 s’est terminée au deux tiers du stage,

néanmoins ils ont été perfectionnés tout au long des 24 semaines.

L’équipe ayant du retard dans la réalisation de modules, il a été confié des tâches

indépendantes demandant parfois un travail important de recherches et de tests.

Ainsi dans cette partie nous verrons deux travaux réalisés, hors du cadre de la

GED. Pour commencer nous aborderons le formulaire gérant un rapport d’erreur, puis

nous décrirons un contrôle unique permettant la visualisation d’un très grand nombre de

types de documents. Enfin nous traiterons trois points très importants concernant

différentes étapes du développement logiciel : la localisation, l’aide au maintient et le

déploiement.

I. Le rapport d’erreur

Une application finale doit être la plus stable possible, mais il arrive toujours que

des erreurs se produises rendant l’utilisation de l’application inexploitable. Ces erreurs

fatales sont appelées exceptions. Ces exceptions doivent alors être corrigées. Pour cela

l’utilisateur en ayant soulevé une, doit en informer la société et ses informations doivent

être assez précises pour pouvoir retrouver ou reproduire l’erreur.

Dans ce but a été réalisé un rapport d’erreur.

1. Réalisation du rapport d’erreur

Ce rapport peut être : envoyé par courrier électronique à la boîte support de la

société, imprimé, écrit dans le journal d’erreur du logiciel ou encore simplement

visionné.

Il fournit :

- Des détails sur le système (le nom du poste, les adresses IP de la machine, la

version du système d’exploitation, le nom et les droits de l’utilisateur), des

détails sur la connexion du logiciel (le nom de l’utilisateur Acropolis, et la base

de données courante) ces deux points précisant l’environnement de l’exception.

- Des détails sur l’exception, son type, sa description, sa source, la trace de la pile

au moment de son soulèvement. Ces informations permettant de retrouver la

fonction où a eu lieu l’erreur.

- Des détails sur l’application elle-même : le nom de l’application concernée, sa

version, la date de sa dernière modification permettant de savoir si l’application

est à jour, les assemblés (noms et versions) qu’utilisent l’application.

Page 49: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

43

De plus l’utilisateur a la possibilité d’ajouter des commentaires pouvant préciser

les manipulations faites et le contexte de l’erreur.

Enfin une capture d’écran prise au moment de l’erreur peut être jointe. Cette

capture permet de connaître entre autres la fenêtre responsable de l’erreur.

Ce rapport peut être imprimé avec ou sans la capture d’écran en suivant la même

technique décrite dans la partie 2.1.2.

Le rapport est envoyé par courrier électronique grâce à une librairie personnelle

de la société.

2. L’appel du rapport d’erreur

L’appel du rapport d’erreur se fait dans les évènements de l’application. La

fenêtre du rapport d’erreur est affichée dans l’événement appelé lorsque le système

récupère une exception non gérée.

Un exemplaire d’un rapport d’erreur est proposé Annexe 3.

II. Réalisation d’un contrôle d’aperçu multi documents

Dans une application gérant plusieurs types de fichiers il est agréable de pouvoir

visualiser un document sans avoir à l’ouvrir dans une application externe. La

visualisation doit au contraire de l’application limiter l’édition du document, et en aucun

cas permettre la modification de celui-ci.

Il a été trouvé une solution pour pouvoir afficher tout type de fichier dans un

même contrôle, toujours en partant du principe annoncé dans les parties précédentes,

c'est-à-dire en utiliser des composants du .net Framework ou gratuits et pouvant être

pilotés.

Il pourra être ouvert des documents de type texte, Html, Xml, image, Office

(Word, Excel, Visio, Power Point, Project) et Pdf.

1. Visualisation des images

Les images seront ouvertes par la visionneuse réalisée dans la partie 1.

2. Visualisation des documents pdf et textuels

Le contrôle WebBrowser du .net Framework possédant les propriétés du

navigateur internet de Microsoft (internet explorer) installé sur le poste courant permet

cela. Une application sera gérée par une instance ActiveX du contrôle (application

permettant de dialoguer entre deux applications), cette application sera lancée en fond

(visible dans la liste des processus) et pourra être pilotée.

Ce contrôle sera utilisé dans le cas d’un document texte (.txt), html, xml. Ces

documents étant interprétés en langage html pour être affichés ne seront donc pas

éditables. Et pdf qui sera ouvert par une ActiveX d’Adobe Acrobat, ou d’Adobe Reader

et sera également non modifiable.

Page 50: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

44

3. Visualisation des documents Offices

La commande ActiveXInstance du contrôle WebBrowser permet d’obtenir la

référence du document ouvert (objet Document pour Word, et Visio ; objet WorkBook

pour Excel).

Néanmoins, cette référence n’est pas assez pilotable pour pouvoir utiliser

correctement et proprement le contrôle WebBrowser.

Principalement il n’est pas possible d’ouvrir ou de fermer d’autres documents à

partir de cette référence. De telles opérations sont normalement réalisables à partir de

l’objet Application situé au dessus de la référence du document mais celui-ci n’est pas

réellement présent ici. Ainsi piloter l’ouverture (ouverture en lecture seule), ou la

fermeture (permettant la bonne destruction mémoire des processus des applications

lanceuses) est un problème.

Ainsi pour les applications Microsoft Office essentiellement Word, Excel, Visio,

il sera utilisé un contrôle pilotant également un WebBrowser mais étant beaucoup plus

propre, offrant ses propres outils de pilotage (ouverture et fermeture de document,

masquage/affichage simple des barres, gestion des évènements d’enregistrement,

impression…) et pouvant être piloté de la même manière que le contrôle WebBrowser.

Ce contrôle est fourni par Microsoft réalisé pour Visual C++, mais pilotable par

langage VB et VB.net. Il est fourni par une Ocx devant être enregistrée (regsvr32)

« Dsoframer.ocx » [08].

4. Conclusion au contrôle

Pour conclure, les documents images seront ouverts par le contrôle GED en

mode « lecture seule », les fichiers Office par le contrôle Microsoft « DsoFramer » sans

ces barres d’outils, de menus et de titres, et avec ses documents protégés contre

l’édition. Les types pdf, texte et html par le contrôle WebBrowser du .net Framework

sans autoriser la navigation et les raccourcis claviers.

Un contrôle unique regroupant ces trois types de contrôle appellera le bon

suivant la nature du document à ouvrir.

Page 51: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

45

III. La localisation

La localisation est une étape dans le développement d’un projet consistant à

définir une application dans plusieurs langues. Une même application pouvant être

localisable dans une infinité de langages à la fois.

Dans notre cas, la société fournit bien sûr une version française mais également

anglaise.

Sous Visual studio 2005 la localisation d’un langage consiste à définir les

différences situées entres les différentes versions d’applications dans les ressources de

l’application, fichiers définissant les images, les chaînes de caractères propres à chaque

classe. Chaque langage devant posséder son fichier ressource propre.

Pour la localisation des interfaces, les différentes ressources sont créées

automatiquement : il ne reste alors plus qu’à les traduire.

Dans le cas de chaines écrites en dur dans le programme il faut définir une

ressource pour chaque expression, dans chaque fichier ressource de chacun des langages

souhaités. L’accès à la chaine se fera alors par la ressource du projet, qui utilisera

automatiquement le bon fichier ressource suivant le langage souhaité.

Page 52: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

46

IV. Les commentaires L’explication d’un code par l’ajout de commentaires permet sa compréhension

ce qui va ainsi rendre possible son entretien et son amélioration.

En Visual Basic il est possible de générer automatiquement un fichier XML

d’aide, décrivant les membres et les types d’une classe, ce qui va permettre de concevoir

facilement un petit manuel de la classe.

Ces commentaires sont également utilisés par le compilateur et par

l’IntelliSense. Le compilateur va vérifier la cohérence entre les méthodes et paramètres

déclarés en commentaire et ceux réellement présents. L’IntelliSense va utiliser ces

commentaires, pour résumer la fonctionnalité d’une méthode, décrire les paramètres de

cette méthode, décrire une classe… (cf. introduction).

Pour déclarer un commentaire à mettre dans le fichier XML, il suffit de le mettre

entre balises (n’importe lesquelles) sur la ligne du dessus du membre voulant être

commenté et de précéder ces balises par 3 cotes simples.

Le fichier XML sera alors créé lors de la compilation du projet, il possédera le même

nom que le projet mais avec l’extension ‘.xml’

Afin que l’IntelliSense utilise ces commentaires, les balises doivent être

spécifiques. La balise <summary> décrira le membre commenté, les balises <param>

déclareront et énonceront un paramètre du membre et obligera le compilateur à vérifier

que le paramètre décrit existe bien…

(a)

(b)

Exemples 3.4.1 : le cartouche de la fonction OuvrirImage (a), et son aide compilée(b)

Page 53: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

47

V. Le déploiement

Le déploiement d’une application consiste à créer un automate capable

d’installer, et de désinstaller correctement une application ainsi que ses dépendances.

Les dépendances étant toutes les bibliothèques, ou encore fichiers nécessaires à son

utilisation.

Dans le cas de la visionneuse il faut installer les polices de caractères aidant à

générer les images codes barres, la librairie de numérisation « WiaAut.dll » (permettant

la numérisation) n’étant présente d’origine que sur les systèmes Vista, la librairie

« Modi.dll » (permettant la reconnaissance optique de caractères) si la suite office 11 est

installée sur le poste, les 2 librairies précédentes interprétées pour qu’elles deviennent

compatibles suivant n’importe quel systèmes d’exploitation, le .net Framework s’il n’est

pas déjà installé, et enfin la librairie contenant la classe définissant la visionneuse.

L’emplacement des dépendances doit être spécifié, les librairies directement

utilisées dans le programme doivent être en général dans le même répertoire que

l’exécutable concerné. Les librairies dépendantes au système d’exploitation doivent être

enregistrées dans la base de registre et insérées dans le dossier ‘système’ du système

d’exploitation, les polices de caractères doivent être enregistrées dans le dossier ‘font‘

du système d’exploitation…

Le déploiement avec Visual Studio 2005 permet de détecter automatiquement

les dépendances aux librairies interprétées, de déterminer les fichiers de sorties et le

niveau d’enregistrement pour chaque fichier, et d’instaurer des conditions au

déploiement. L’exécutable d’installation est sorti en .MSI, il permet en plus de

l’installation et de la suppression automatique de pourvoir réparer l’application.

Cette automatisation de l’installation est un point très important. Il limite les

problèmes à l’installation et ainsi réduit les difficultés et le temps du déploiement et à la

maintenance.

Conclusion Les trois dernières étapes décrites dans les points précédents sont extrêmement

importantes. Une application ne pouvant être maintenue est destinée à disparaître, une

autre ne pouvant être déployée ne pourra pas naître. Un développement représente un

gros investissement en temps et en argent, de tels destins ne sont pas permis.

C’est pourquoi les différents travaux décrits dans ces parties ont été implémentés

dans le but d’être utilisés.

Page 54: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

48

BILAN

Un bon moyen de dresser un bilan est de voir comment les travaux réalisés ont

été utilisés par la société. Cela traduit alors l’accomplissement de l’implémentation du

projet.

I. L’intégration

1. Le module courrier

Le module Courrier est une application de gestion de document courrier

numérique multicanaux (départ, arrivée, interne). Il a pour but de faciliter les procédures

de distribution et de traitement des courriers.

Il permet entre autres la visualisation, la diffusion, le suivi et l’acquisition de

courriers. La recherche de documents se fera par date de créations, rédacteur du

courrier, type d’acquisition, et chrono.

La visionneuse GED intervient dans la partie visualisation et acquisition de

documents image. La visualisation se fait en « lecture seule » afin de ne pas pouvoir

éditer et modifier le document qui dans le cas contraire perd sa valeur de document

original. Les fonctions sont alors le zoom, la navigation, et la rotation de l’image (les

changements ne sont pas enregistrés à la fermeture). La visualisation des documents est

possible soit par une fenêtre indépendante qui sera ouverte à cet effet ou bien dans une

fenêtre d’aperçu intégrée dans la fenêtre principale. L’aperçu se fait par le contrôle de

visualisation multi documents décrit dans la partie précédente.

L’acquisition permet de numériser un document image, puis de le modifier. Lors

de la validation de la création du document, une reconnaissance optique de caractères

est faite afin de créer un fichier texte contenant les informations de l’image et allant lui

être associé.

2. Le module AcroGed

Ce module est destiné à la gestion des documents, il propose la saisie de

documents, la reconnaissance optique de caractères, l’indexation automatique et le

recherche intégrale.

Il propose la visualisation, la saisie de documents, et la recherche de fichiers par

sélections de descripteurs.

L’utilisation de la visionneuse GED et du contrôle d’aperçu multi documents est

la même que pour le module Courrier. A la différence qu’à la fin de l’acquisition du

document, le contenu de l’image est indexé dans un thésaurus spécifique à la nature du

document.

Page 55: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

49

3. Conclusion à l’intégration

La visionneuse a été intégrée à deux modules, dont un allant être commercialisé

dans le mois de février. Le contrôle multi documents va lui aussi être intégré dans le

module distribué. Enfin le formulaire de rapport d’erreur sera fourni dans toutes les

applications « .net » de la société.

A moyen terme la visionneuse GED devra dans la version 4 d’Acropolis

remplacer la fenêtre GED actuelle.

II. Conclusion au travail

Les travaux réalisés lors de ce stage portaient généralement sur la gestion des

documents. L’acquisition, la visualisation, l’impression, l’indexation et la recherche ont

été réalisées, ce qui pourrait permettre de constituer la couche haute d’une petite

application de gestion électronique de documents, et plus particulièrement de

documents image.

Ces modules sont capables d’être déployés et ne requièrent généralement que le

.Net Framework et l’enregistrement de composants COM gratuits. La visionneuse

(parties 1 et 2) est exploitable dans une DLL « GedLib » et peut être installée facilement

par un « .MSI ». Enfin les implémentations ont été commentées le mieux possible.

Néanmoins les points développés précédemment pourraient être améliorés.

La numérisation se limite aux protocoles WIA, et STI ce qui est très suffisant

pour les périphériques récents, mais pose problème pour modèles ne proposant que des

drivers Twain ou ISIS.

La reconnaissance de l’image ne se fait que pour les caractères dactylographiés,

il serait intéressant de développer des modules de traitement d’images, et ainsi

reconnaître les caractères manuscrits ou encore les formes, ce qui permettrait de pouvoir

lire des codes barres ou reconnaître si une case d’un formulaire a été cochée…

L’équilibrage des arbres binaires utilisés pour l’indexation pourrait être optimisé

en utilisant des rotations d’arbres.

Enfin la recherche intégrale n’est disponible que sur les systèmes SQL serveur.

Page 56: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

50

Conclusions

Ce stage réalisé dans une petite infrastructure m’a permis de découvrir les

réunions, les contraintes les avantages et le travail dans une équipe technique, de

percevoir les responsabilités que pouvait avoir le développeur, le chef de projets,

l’analyste programmeur, l’ingénieur, les commerciaux ou encore le directeur technique.

De plus l’entreprise étant partenaire gold de la multinational Microsoft, cela m’a

permis de découvrir leurs outils que j’ai trouvé simples et performants. J’ai ainsi pu

apprendre à utiliser Visual Basic 2005, le .net Framework, Visual Studio et un

contrôleur de code « source Team Foundation Server », qui sont des compétences

techniques de plus en plus recherchées par les entreprises.

Le travail réalisé n’était pas simple car hormis le concept d’évènementiel et mes

notions de programmations, je ne connaissais rien du langage, des librairies et modèles

objet utilisés, ni même comment les utiliser.

J’ai alors compris la difficulté et la puissance de la gestion du travail en équipe,

sur des projets distincts, et des solutions finales séparées, la complexité et l’importance

du déploiement, du suivi, de l’assistance, et de la maintenance d’un produit.

J’ai du faire de nombreuses recherches essentiellement sur internet. Très peu de sources

traitaient de mes problèmes et elles étaient souvent incomplètes. Il a alors fallu

rechercher des solutions par moi-même, comprendre leurs fonctionnements, puis les

tester et souvent recommencer. J’ai trouvé cela passionnant, cela m’a permis

d’apprendre et m’a fait prendre conscience du métier de développeur.

Ces travaux m’ont réellement donné envie de pouvoir conduire mes propres

projets, de développer des solutions, et de répondre à des attentes.

Ils m’ont donné envie de poursuivre dans la voix du développement, peut être pas

spécifiquement dans le domaine de la gestion et la base de données, mais au moins de

m’y intéresser.

Page 57: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

51

Bibliographie

[01] Cencini Andrew, « Fonction de recherche en texte intégral SQL Server 2005 :

Description et améliorations apportées », Microsoft Corporation, Décembre 2003.

[02] Laudat Jerry, « Can you use WIA instead of Twain? »,

http://www.eggheadcafe.com/, 23 octobre 2006.

Mélantois Frédéric, « Traitement d’images sous .NET, partie 1 », .NET passionnément,

tout simplement, novembre 2005.

Mélantois Frédéric, « Traitement d’images sous .NET, partie 2», .NET passionnément,

tout simplement, 7 février 2006.

[03] Monteix Christian, Le format tiff et ses modes de compression , Eyrolles.

[04] Morand Louis-Guillaume, « Utilisation des expressions régulières en .Net », 08

mars 2005.

Powell Bob, «La FAQ de Bob Powell.net», http://www.bobpowell.net/.

Richard Clark, Au cœur de Microsoft Visual Basic .Net , Microsoft Press.

[05] Richard Clark, « Imprime moi un mouton », Au cœur de Microsoft Visual Basic

.Net , p 174-183, Microsoft Press.

Richard Clark, « c2i.fr – Le premier portail.net », http://www.c2i.fr/.

Richtern Jeffry, .Net Framework, Microsoft Press.

Sempf Bill, Visual Basic 2005 pour les nuls, first interactive.

Sorel Nicolas, « VBfrance.com», http://www.vbfrance.com/.

[06] Welker Martin, « OCR with Microsoft Office», codeproject.com,

http://www.codeproject.com/csharp/modi.asp , 29 septembre 2006.

ImageControls3, programmer’s guide, kofax.

[07] L’équipe d’Odyssée Ingénierie, Guide de l’utilisateur, Odyssée Ingénierie, janvier

2002.

[08] « Visual C++ ActiveX Control for hosting Office documents in Visual Basic or

HTML», Microsoft Corporation, 23 novembre 2006.

[09] « MSDN», http://msdn.microsoft.com/, Microsoft Corporation..

[10] «WIA Automation», http://www.microsoft.com/downloads, Microsoft

Corporation, 2002.

Page 58: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

1

Annexes

Annexe 1 : Les threads

1. Définition

Le concept de thread parait souvent abstrait au programmeur débutant, pourtant

les threads sont utilisés partout dans nos ordinateurs. Cet outil peut être considéré

comme un petit processus lancé par un processus principal (étant lui aussi un thread du

Système d’exploitation en quelque sorte), et exécuté parallèlement à ce dernier.

Ainsi lorsque le système d’exploitation et la machine supportent ce concept,

l’ordinateur traitera à tour de rôle les threads ce qui permettra qu’aucun ne soit bloqué.

Dans notre cas un thread parallèle, au thread de l’application principale, est

utilisé lorsque le programme doit exécuter une opération si couteuse en temps de calcul

qu’elle va rendre inutilisable l’application principale, ce qui va donner au programme

l’impression qu’il a bloqué, alors que celui-ci travaille.

2. Les priorités

En VB un thread peut avoir différents niveaux de priorité pour ainsi favoriser

certaines applications essentielles, et en défavorisant d’autres plus secondaires.

Un thread possédant une haute priorité sera appelé plus souvent et traité plus longtemps

qu’un thread de basse priorité.

Visual Basic 2005 possède 5 niveaux de priorité défini dans le paramètre

Priority de l’objet thread, en allant de la plus haute à la plus basse valeur de priorité :

Highest

AboveNormal

Normal

BelowNormal

Lowest

3. La destruction

La destruction d’un thread n’est permise que si le thread devant être détuit est en

cours d’exécution ou actif (isAlive). Elle est réalisée soit par la procédure de l’objet

thread Abort (qui déclenche une exception de type ThreadAbordException sur le thread

appelant pour commencer le processus d'arrêt du thread), soit automatiquement lorsque

les taches qui lui ont été assignées ont été réalisées.

Néanmoins il faut faire attention à ce que les threads soient bien détruits lorsque

le programme principal est fermé, dans le cas contraire une exception sera soulevée.

Page 59: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

2

Annexe 2 : Exemple de traitement par Reconnaissance optique de caractères

(figure 2) par la librairie MODI de l’image normesSynthaxique.tif (figure 1).

Figure 1 : Image normesSynthaxique.tif (2500x3400 1bit/pixel)

Page 60: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

3

Normes syntaxiques du code

Définition de la charte syntaxique à adopter pour tout développement (.NET) à venir.

Les minuscules / majuscules ont leur importance. Il est important de commencer à

respecter ces règles car nous allons mettre en place par la suite une analyse syntaxique

automatique.

Les accents dans les noms de variables, de classes ou de fonctions sont à proscrire.

Syntaxe des Attributs et Propriétés

Locales à une fonction nom Variable

Attribut privé

Attribut protected

Attribut public

Property

nomAttribut ou pNomAttribut

nomAttribut ou pNomAttribut

NomAttribut (Ne devrait pas exister car ilfaut

preférer les attributs privés exposés par une

property publique)

NomPropriété

Syntaxe des Fonctions

Fonction d’une classe NomFonction

Paramètre d’une fonction nomParamètre

Syntaxe des Contrôles

Textbox

Txt + Nom Contrôle

Label

Lbl + Nom Contrôle

Bouton

Btn + Nom Contrôle

CheckBox

Chk + Nom Contrôle

RadioButton

Rdo + NomContrôle

ListBox

Lst + Nom Contrôle

Menu

Mmi + Nom Contrôle

ComboBox

Cmb + Nom Contrôle

Timer

Tmr + Nom Cont rôle

ProgressBar

Prg + Nom Cont rôle

StatusBar

Sta + NomContrôle

ToolBar

Tlb + NomContrôle

DataGrid

Dg + NomContrôle

Figure2 : Texte de l’image normesSynthaxique.tif reconnu par OCR

Page 61: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

4

Annexe 3 : Exemple de compte rendu de rapport d’erreur.

Figure 1 : Page 1 du rapport d’erreur

Page 62: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

5

Figure 2 : Page 2 du rapport d’erreur contenant la capture d’écran

Page 63: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

6

Annexe 4 : Diagramme de classe simplifié de la visionneuse d’images

Figure 1 : Diagramme de classe simplifié de la visionneuse d’images

Page 64: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

7

Annexe 5 : Aperçu de la visionneuse d’image.

Figure 1 : fenêtre de la visionneuse, avec chemin de fer vertical et moyennes

miniatures.

Page 65: ST40 – Rapport de stage professionnel La gestion ...trivis.free.fr/pdf/rapport_ST40.pdf · administrative, gestion électronique de documents, workflow, gestion des courriers, des

Résumé

Le stage a eu lieu dans le Rhône (69), dans la société Odyssée Ingénierie,

productrice de progiciels et de solutions de services informatiques, essentiellement

portés sur la gestion de la production administrative électronique.

Le travail consistait en la réalisation de plusieurs projets tous réalisés en langage

Visual Basic 2005 couplé au .net Framework 2.0.

Il a été réalisé dans un premier temps, une visionneuse de documents image

(essentiellement du TIFF multi page) prenant comme fonctionnalités (en dehors de la

visualisation et des manipulations de base de l’image) : la possibilité d’impression, un

outil d’acquisition par librairie WIA, de reconnaissance optique de caractères par

librairie MODI, d’indexation et de recherche "fulltext" de documents.

Puis dans un deuxième temps, il a été implémenté un rapport d’erreurs et

plusieurs contrôles permettant la visualisation et l’ouverture de tous types de

documents.

Mot clé BRANCHE

D’ACTIVITE

ECONOMIQUE

Mot clé METIERS Mot clé DOMAINE

TECHNOLOGIQUE

Mot clé APPLICATION

PHYSIQUE DIRECTE

18- SSII / Services

informatique

15- Etude et

Conseil

05- Informatique

02-Algorithmes

11- Développements

logiciels

04-Logiciel- de

gestion