Bonjour,
Je suis en train de m'amuser à faire un projet perso de GED.
Parmi les fonctionnalités d'une GED, il y a la numérisation de documents papier, et leur indexation.
J'ai deux options qui s'offrent à moi pour l'indexation :
- Passer le document scannée dans un OCR, puis récupérer le texte, avant de l'injecter dans ma base de données indexées en fulltext. Avec une bidouille, lorsque fulltext retrouvera le texte de mon image, au lieu d'afficher ce texte, j'irai chercher l'image, stockée ailleurs.
- Ecrire un IFilter pour SQL Server, me permettant de stocker directement l'image dans ma table des documents, et de l'indexer en fulltext sans faire de différence par rapport à un document word ou pdf.
La seconde solution me tente beaucoup pour deux raisons :
- Que mon document soit JPG ou DOC, je le gère rigoureusement de la même façon
- Le module généré pourra être utilisé par d'autres personnes
- La procédure d'indexation de SQL Server est récursive. Cela implique que si un document Word contient par exemple un document PDF, le document PDF est analysé au sein du document Word... Cela veut dire aussi, logiquement, que si une image est présente dans un document Word ou PDF, alors elle sera indexée : très pratique, quand on sait que de nombreux photocopieurs permettent de générer directement des PDF ou DOC à partir des documents scannés ou reçus par fax !
Je souhaite donc me lancer dans l'écriture d'un IFilter pour SQL Server.
Maintenant, les choses se corsent :
- Peut-on faire un IFilter en C#, ou dois-je obligatoirement faire du C++ (pitiée, dites-moi que C# est supporté)
- Quel OCR choisir ? Tesseract de Google semble pas mal, et à l'avantage d'être Open Source, et sous une licence (Apache2) permettant sa distribution. En revanche, rien ne semble être prévu pour le support de C# ! J'ai bien trouvé Tessnet2, mais il est basé sur une vieille version de Tesseract, plutôt désuette. J'ai trouvé aussi comment faire un wrapper de l'EXE, mais je trouve ça plutôt très crade de procéder de la sorte. D'autant que j'imagine que IFilter ne permet pas tout, et lancer un exe externe me semble une limitation plutôt logique en termes de sécurité.
Donc, existe-t-il une adaptation de Tesseract pour C# ? Un Wrapper de la DLL ?
Question subsidiaire : n'existerait-il pas déjà un tel IFilter ?
EDIT
Un truc que je pige pas non plus...
TIFF, c'est bien un format d'image, non ?
Pourquoi Microsoft fournit-il un IFilter capable de faire ce que je désire... mais uniquement pour les TIFF ???
http://technet.microsoft.com/en-us/l...85(WS.10).aspx
Du coup, je me demande si un solution ne serait pas de convertir à la volée les images en TIFF lors de leur indexation dans la GED... Reste que pour les image embeded dans un autre document, c'est pas possible :/
Partager