Je veux extraire les informations d'une table scannée et la stocker dans un csv. À l'heure actuelle, mon algorithme d'extraction de table effectue les étapes suivantes.
Cet algorithme fonctionne très bien pour les fichiers PDF numériques et la plupart des documents numérisés. Mais, certains des documents ont une table bruyante et donc il n'identifie pas correctement les lignes.
Voici un exemple d'image dans laquelle mon algorithme échoue.
Voici les opérations que je fais sur cette table. 1. flou gaussien
2.Seuil d'Otsu
3. ouverture morphologique
4.Détection des bords de la cage
5. lignes filtrées, comme vous pouvez le voir, les lignes ne sont clairement pas identifiées correctement.
Quelqu'un peut-il suggérer une meilleure méthode pour extraire les lignes horizontales et verticales de ce type de numérisation de moins bonne qualité.
Merci d'avance !!
3 Réponses :
Le problème vient peut-être de HoughLinesTransform()
Vous pouvez essayer d'utiliser: HoughLinesTransformP()
Pour que HoughLinesTranform () fonctionne parfaitement, les lignes doivent être parfaites. À partir de l'image que vous avez fournie, vous pouvez voir clairement la distorsion qui provoque clairement l'échec de la méthode. Essayez d'abord de dilater votre image. Dilatation d'image en Python.
Le problème est et sera toujours que vous n'avez pas de lignes parfaites. Une solution pour cette approche peut être:
J'ai trouvé une solution parfaite dans ce blog. https://medium.com/ coinmonks / a-box-detection-algorithm-for-any-image-contenant-boxes-756c15d7ed26
Ici, nous faisons des transformations morphologiques en utilisant un noyau vertical pour détecter les lignes vétiques et un noyau horizontal pour détecter les lignes horizontales, puis en les combinant pour obtenir toutes les lignes requises.