# ReadDocumentAdvanced ile Noktalı Kenar Tablosu Algılama
`ReadDocumentAdvanced` tablo verilerini hücre hücre çıkarır ancak sınırları noktalı veya kesikli olan tabloları algılayamaz (örneğin, `border: 1px dotted black`). Sayfadaki metin hala okunabilir olabilir, ama tablo nesnesine erişmek başarısız olur çünkü motor tabloyu asla tanımaz.
Noktalı sınır tablosu içeren bir belgede `ReadDocumentAdvanced` çağırdığınızda ve hücrelerini okuduğunuzda, şu hatayı verir:
```txt
Unhandled exception. System.InvalidOperationException: Sequence contains no elements
```
Noktalar arasındaki boşluklar, kenarlığı kesik segmente ayırır, bu nedenle OCR motoru, tablo sınırı olarak işlem görecek bir sürekli kontur göremez. Hiçbir `Tables` algılanmadığında, `Tables.First()` geri dönecek bir şey yoktur.
## Çözüm
İşlemeden önce `Dilate()` filtresini uygulayın. Dilation, görüntüdeki karanlık pikselleri genişleterek noktalar arasındaki boşlukları kapatarak kenarların bir katı çizgi olarak okunmasını sağlar. Motor, daha sonra tablo nesnesini tespit edebilir ve hücrelerini döndürebilir.
### 1. Tablo okumayı etkinleştir ve girdiyi yükle
Motorun yapılandırılmış tablo çıktısı oluşturması için `ReadDataTables`'yi açın, sonra görüntünüzü yükleyin.
```csharp
var ocr = new IronTesseract();
ocr.Configuration.ReadDataTables = true;
var input = new OcrInput();
input.Load("image-20250408-144240.png");
```

### 2. Okumadan önce şişir
Noktalı sınırı sürekli bir kontura birleştirmek için girdiye `Dilate()` çağrısı yapın, ardından `ReadDocumentAdvanced` çalıştırın.
```csharp
input.Dilate();
input.SaveAsImages("export.png", AnyBitmap.ImageFormat.Png);
var res = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(res.Tables.First().CellInfos.First().CellText);
```
`Dilate()` görsel noktalı çizgileri motorun izleyebileceği sağlam sınırlara dönüştürür, böylece `res.Tables` şimdi doludur ve hücre metni temiz bir şekilde okunur. `SaveAsImages` çağrısı opsiyoneldir; kenarların beklenen şekilde kapanıp kapanmadığını doğrulamak için genişletilmiş görüntüyü incelemenize olanak tanır.

ReadDocumentAdvanced tablo verilerini hücre hücre çıkarır ancak sınırları noktalı veya kesikli olan tabloları algılayamaz (örneğin, border: 1px dotted black). Sayfadaki metin hala okunabilir olabilir, ama tablo nesnesine erişmek başarısız olur çünkü motor tabloyu asla tanımaz.
Noktalı sınır tablosu içeren bir belgede ReadDocumentAdvanced çağırdığınızda ve hücrelerini okuduğunuzda, şu hatayı verir:
Unhandled exception. System.InvalidOperationException: Sequence contains no elements
Unhandled exception. System.InvalidOperationException: Sequence contains no elements
Text
Noktalar arasındaki boşluklar, kenarlığı kesik segmente ayırır, bu nedenle OCR motoru, tablo sınırı olarak işlem görecek bir sürekli kontur göremez. Hiçbir Tables algılanmadığında, Tables.First() geri dönecek bir şey yoktur.
Çözüm
İşlemeden önce Dilate() filtresini uygulayın. Dilation, görüntüdeki karanlık pikselleri genişleterek noktalar arasındaki boşlukları kapatarak kenarların bir katı çizgi olarak okunmasını sağlar. Motor, daha sonra tablo nesnesini tespit edebilir ve hücrelerini döndürebilir.
1. Tablo okumayı etkinleştir ve girdiyi yükle
Motorun yapılandırılmış tablo çıktısı oluşturması için ReadDataTables'yi açın, sonra görüntünüzü yükleyin.
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. Okumadan önce şişir
Noktalı sınırı sürekli bir kontura birleştirmek için girdiye Dilate() çağrısı yapın, ardından ReadDocumentAdvanced çalıştırın.
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() görsel noktalı çizgileri motorun izleyebileceği sağlam sınırlara dönüştürür, böylece res.Tables şimdi doludur ve hücre metni temiz bir şekilde okunur. SaveAsImages çağrısı opsiyoneldir; kenarların beklenen şekilde kapanıp kapanmadığını doğrulamak için genişletilmiş görüntüyü incelemenize olanak tanır.
Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.