OCR Software serait-il capable de traduire de manière fiable une image telle que la suivante en une liste de valeurs?
MISE À JOUR:
Plus en détail, la tâche est la suivante:
Nous avons une application client, où l'utilisateur peut ouvrir un rapport. Ce rapport contient un tableau de valeurs. Mais tous les rapports ne se ressemblent pas - polices différentes, espacement différent, couleurs différentes, peut-être que le rapport contient de nombreux tableaux avec un nombre différent de lignes/colonnes ...
L'utilisateur sélectionne une zone du rapport qui contient un tableau. À l'aide de la souris.
Maintenant, nous voulons convertir la table sélectionnée en valeurs - en utilisant notre outil OCR.
Au moment où l'utilisateur sélectionne la zone rectangulaire, je peux demander des informations supplémentaires pour aider au processus d'OCR et demander confirmation que les valeurs ont été correctement reconnues.
Ce sera initialement un projet expérimental, et donc très probablement avec un outil OCR OpenSource - ou au moins un qui ne coûte pas d'argent à des fins expérimentales.
La réponse simple est OUI, vous devez simplement choisir les bons outils.
Je ne sais pas si l'open source peut jamais atteindre une précision de 100% sur ces images, mais sur la base des réponses ici, probablement oui, si vous passez du temps à vous entraîner et à résoudre le problème d'analyse de table et des trucs comme ça.
Lorsque nous parlons d'OCR commerciale comme ABBYY ou autre, il vous fournira une précision de 99% + dès la sortie de la boîte et il détectera automatiquement les tables. Aucune formation, rien, tout fonctionne. L'inconvénient est que vous devez payer pour cela $$. Certains objecteront que pour l'open source, vous payez votre temps pour l'installer et le maintenir - mais tout le monde décide par lui-même ici.
Cependant, si nous parlons d'outils commerciaux, il y a en fait plus de choix. Et cela dépend de ce que vous voulez. Les produits en boîte comme FineReader visent en fait à convertir les documents d'entrée en documents modifiables comme Word ou Excell. Étant donné que vous souhaitez réellement obtenir des données, pas le document Word, vous devrez peut-être examiner différentes catégories de produits - Data Capture, qui est essentiellement OCR plus une logique supplémentaire pour trouver les données nécessaires sur la page. En cas de facture, il peut s'agir du nom de la société, du montant total, de la date d'échéance, des postes dans le tableau, etc.
La capture de données est un sujet compliqué et nécessite un certain apprentissage, mais une utilisation correcte peut donner une précision garantie lors de la capture de données à partir des documents. Il utilise différentes règles pour le recoupement des données, les recherches de base de données, etc. Si nécessaire, il peut envoyer des données pour une vérification manuelle. Les entreprises utilisent largement les applications de capture de données pour saisir des millions de documents chaque mois et s'appuient fortement sur les données extraites dans leur flux de travail quotidien.
Et il y a aussi bien sûr le SDK OCR, qui vous donnera accès à l'API aux résultats de la reconnaissance et vous pourrez programmer quoi faire avec les données.
Si vous décrivez votre tâche plus en détail, je peux vous donner des conseils sur la direction à suivre.
[~ # ~] mise à jour [~ # ~]
Donc, ce que vous faites est essentiellement une application de capture de données, mais pas entièrement automatisée, en utilisant une approche dite "cliquez pour indexer". Il existe de nombreuses applications comme celle-ci sur le marché: vous numérisez des images et des clics d'opérateur sur le texte de l'image (ou dessinez un rectangle autour), puis remplissez les champs dans la base de données. C'est une bonne approche lorsque le nombre d'images à traiter est relativement petit et que la charge de travail manuelle n'est pas assez importante pour justifier le coût d'une application entièrement automatisée (oui, il existe des systèmes entièrement automatisés qui peuvent faire des images avec une police, un espacement, une disposition, un nombre de polices différents). lignes dans les tableaux, etc.).
Si vous avez décidé de développer des trucs et au lieu d'acheter, alors tout ce dont vous avez besoin ici est de choisir OCR SDK. Toute l'interface utilisateur, vous allez vous écrire, non? Le grand choix est de décider: open source ou commercial.
La meilleure source ouverte est l'OCS tesseract, pour autant que je sache. Il est gratuit, mais peut avoir de réels problèmes avec l'analyse des tableaux, mais avec l'approche de zonage manuel, cela ne devrait pas être le problème. En ce qui concerne la précision de l'OCR - les gens entraînent souvent l'OCR pour les polices afin d'augmenter la précision, mais cela ne devrait pas être le cas pour vous, car les polices peuvent être différentes. Vous pouvez donc simplement essayer de tesseract et voir quelle précision vous obtiendrez - cela influencera la quantité de travail manuel pour le corriger.
L'OCR commerciale offrira une plus grande précision mais vous coûtera de l'argent. Je pense que vous devriez de toute façon jeter un œil pour voir si cela en vaut la peine, ou tesserack est assez bon pour vous. Je pense que le moyen le plus simple serait de télécharger la version d'essai d'une boîte OCR prouct comme FineReader. Vous aurez alors une bonne idée de la précision du SDK OCR.
Si vous avez toujours des bordures solides dans votre table, vous pouvez essayer cette solution:
- Repérez les lignes horizontales et verticales sur chaque page (longues séquences de pixels noirs)
- Segmentez l'image en cellules en utilisant les coordonnées de la ligne
- Nettoyez chaque cellule (supprimez les bordures, le seuil en noir et blanc)
- Effectuer l'OCR sur chaque cellule
- Assemblez les résultats dans un tableau 2D
Sinon, votre document a un tableau sans bordure, vous pouvez essayer de suivre cette ligne:
La reconnaissance optique des caractères est quelque chose d'assez étonnant, mais ce n'est pas toujours parfait. Pour obtenir les meilleurs résultats possibles, il est utile d'utiliser l'entrée la plus propre possible. Dans mes premières expériences, j'ai trouvé que l'exécution de l'OCR sur l'ensemble du document fonctionnait plutôt bien tant que j'enlevais les bordures des cellules (longues lignes horizontales et verticales). Cependant, le logiciel a compressé tous les espaces en un seul espace vide. Comme mes documents d'entrée avaient plusieurs colonnes avec plusieurs mots dans chaque colonne, les limites des cellules se perdaient. Conserver la relation entre les cellules était très important, donc une solution possible était de dessiner un caractère unique, comme "^" sur chaque limite de cellule - quelque chose que l'OCR reconnaîtrait encore et que je pourrais utiliser plus tard pour diviser les chaînes résultantes.
J'ai trouvé toutes ces informations dans ce lien, demandant à Google "OCR to table". L'auteur a publié n algorithme complet utilisant Python et Tesseract , les deux solutions open source!
Si vous voulez essayer le pouvoir Tesseract, vous devriez peut-être essayer ce site:
De quel OCR vous parlez?
Développerez-vous des codes basés sur cet OCR ou utiliserez-vous quelque chose sur les étagères?
Pour info: ( OCR Tesseract
il a implémenté l'exécutable de lecture du document, vous pouvez donc alimenter la page entière et extraire des caractères pour vous. Il reconnaît assez bien les espaces vides, il pourrait être utile pour l'espacement des tabulations.
J'utilise l'OCR des documents numérisés depuis 1998. Il s'agit d'un problème récurrent pour les documents numérisés, en particulier pour ceux qui incluent des pages pivotées et/ou inclinées.
Oui, il existe plusieurs bons systèmes commerciaux et certains pourraient fournir, une fois bien configuré, un taux d'exploration de données automatique formidable, ne demandant l'aide de l'opérateur que pour ces champs très dégradés. Si j'étais vous, je compterais sur certains d'entre eux.
Si les choix commerciaux menacent votre budget, l'OSS peut vous aider. Mais, "il n'y a pas de déjeuner gratuit". Vous devrez donc compter sur un tas de scripts sur mesure pour échafauder une solution abordable pour traiter votre tas de documents. Heureusement, vous n'êtes pas seul. En fait, au cours des dernières décennies, de nombreuses personnes ont dû faire face à cela. Donc, à mon humble avis, la meilleure et concise réponse à cette question est fournie par cet article:
Sa lecture en vaut la peine! L'auteur propose ses propres outils utiles, mais la conclusion de l'article est très importante pour vous donner un bon état d'esprit sur la façon de résoudre ce type de problème.
"Il n'y a pas de solution miracle." (Fred Brooks, Le mois-homme mitical )
Cela dépend vraiment de la mise en œuvre.
Il existe quelques paramètres qui affectent la capacité de l'OCR à reconnaître:
1. La qualité de la formation de l'OCR - la taille et la qualité de la base de données d'exemples
2. Dans quelle mesure il est formé pour détecter les "ordures" (en plus de savoir ce qu'est une lettre, vous devez savoir ce qui n'est PAS une lettre).
3. Conception et type de l'OCR
4. S'il s'agit d'un réseau Nerural, la structure du réseau Nerural affecte sa capacité à apprendre et à "décider".
Donc, si vous n'en créez pas un, il suffit de tester différents types jusqu'à ce que vous trouviez celui qui vous convient.
Nous avons également eu du mal à reconnaître le texte dans les tableaux. Il existe deux solutions qui le font hors de la boîte, ABBYY Recognition Server et ABBYY FlexiCapture. Rec Server est un outil OCR à haut volume basé sur serveur conçu pour la conversion de grands volumes de documents dans un format consultable. Bien qu'il soit disponible avec une API pour ces types d'utilisations, nous recommandons FlexiCapture. FlexiCapture offre un contrôle de bas niveau sur l'extraction des données à partir des formats de tableau, y compris la détection automatique des éléments de tableau sur une page Il est disponible dans une version API complète sans frontal, ou dans la version standard que nous commercialisons. Contactez-moi si vous voulez en savoir plus.
Vous pouvez essayer une autre approche. Avec tesseract (ou autre OCRS), vous pouvez obtenir des coordonnées pour chaque mot. Ensuite, vous pouvez essayer de regrouper ces mots par coordonnées vercitales et horizontales pour obtenir des lignes/colonnes. Par exemple, pour faire la différence entre un espace blanc et un espace de tabulation. Il faut un peu de pratique pour obtenir de bons résultats, mais c'est possible. Avec cette méthode, vous pouvez détecter des tables même si les tables utilisent des séparateurs invisibles - pas de lignes. Les coordonnées Word sont une base solide pour la reconnaissance de table