# Détection de Tables à Bordures Pointillées avec ReadDocumentAdvanced
`ReadDocumentAdvanced` extrait les données des cellules de table une à une, mais il ne peut pas détecter les tables dont les bordures sont pointillées ou à tirets (par exemple, `border: 1px dotted black`). Le texte de la page peut encore être lisible, mais l'accès à l'objet de table échoue car le moteur ne reconnaît jamais la table.
Lorsque vous appelez `ReadDocumentAdvanced` sur un document avec une table à bordure pointillée et que vous lisez ses cellules, cela génère une erreur :
```txt
Unhandled exception. System.InvalidOperationException: Sequence contains no elements
```
Les espaces entre les points fragmentent la bordure en segments discontinus, donc le moteur OCR ne voit aucun contour continu à traiter comme une limite de table. Aucun `Tables` détecté, `Tables.First()` n'a rien à retourner.
## Solution
Appliquez le filtre `Dilate()` avant de traiter. La dilatation étend les pixels sombres dans l'image, comblant les espaces entre les points afin que la bordure soit lue comme une ligne solide. Le moteur peut alors détecter l'objet de table et retourner ses cellules.
### 1. Activez la lecture de table et chargez l'entrée
Activez `ReadDataTables` pour que le moteur génère une sortie de table structurée, puis chargez votre image.
```csharp
var ocr = new IronTesseract();
ocr.Configuration.ReadDataTables = true;
var input = new OcrInput();
input.Load("image-20250408-144240.png");
```

### 2. Dilatez avant de lire
Appelez `Dilate()` sur l'entrée pour fusionner la bordure pointillée en un contour continu, puis exécutez `ReadDocumentAdvanced`.
```csharp
input.Dilate();
input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png);
var res = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(res.Tables.First().CellInfos.First().CellText);
```
`Dilate()` convertit les lignes pointillées visuelles en bordures solides que le moteur peut tracer, donc `res.Tables` est maintenant rempli et le texte des cellules est lu clairement. L'appel `SaveAsImages` est facultatif ; il vous permet d'inspecter l'image dilatée pour confirmer que les bordures se sont fermées comme prévu.

ReadDocumentAdvanced extrait les données des cellules de table une à une, mais il ne peut pas détecter les tables dont les bordures sont pointillées ou à tirets (par exemple, border: 1px dotted black). Le texte de la page peut encore être lisible, mais l'accès à l'objet de table échoue car le moteur ne reconnaît jamais la table.
Lorsque vous appelez ReadDocumentAdvanced sur un document avec une table à bordure pointillée et que vous lisez ses cellules, cela génère une erreur :
Unhandled exception. System.InvalidOperationException: Sequence contains no elements
Unhandled exception. System.InvalidOperationException: Sequence contains no elements
Text
Les espaces entre les points fragmentent la bordure en segments discontinus, donc le moteur OCR ne voit aucun contour continu à traiter comme une limite de table. Aucun Tables détecté, Tables.First() n'a rien à retourner.
Solution
Appliquez le filtre Dilate() avant de traiter. La dilatation étend les pixels sombres dans l'image, comblant les espaces entre les points afin que la bordure soit lue comme une ligne solide. Le moteur peut alors détecter l'objet de table et retourner ses cellules.
1. Activez la lecture de table et chargez l'entrée
Activez ReadDataTables pour que le moteur génère une sortie de table structurée, puis chargez votre image.
var ocr = new IronTesseract();ocr.Configuration.ReadDataTables = true;var input = new OcrInput();input.Load("image-20250408-144240.png");
var ocr = new IronTesseract();
ocr.Configuration.ReadDataTables = true;
var input = new OcrInput();
input.Load("image-20250408-144240.png");
C#
2. Dilatez avant de lire
Appelez Dilate() sur l'entrée pour fusionner la bordure pointillée en un contour continu, puis exécutez ReadDocumentAdvanced.
input.Dilate();input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png);var res = ocr.ReadDocumentAdvanced(input);Console.WriteLine(res.Tables.First().CellInfos.First().CellText);
input.Dilate();
input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png);
var res = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(res.Tables.First().CellInfos.First().CellText);
C#
Dilate() convertit les lignes pointillées visuelles en bordures solides que le moteur peut tracer, donc res.Tables est maintenant rempli et le texte des cellules est lu clairement. L'appel SaveAsImages est facultatif ; il vous permet d'inspecter l'image dilatée pour confirmer que les bordures se sont fermées comme prévu.
Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.