Verilerin çoğu belgelerde, resimlerde ve web’de görsel metin olarak temsil edilir; dolayısıyla metin verilerinin çıkarılması bazen en çok ihtiyaç duyulan şeydir. Word veya PDF belgelerinden metin veya resim çıkarmanız gerekebilir. Bir C# geliştiricisi olarak belgelerden program aracılığıyla kolayca metin ayıklayabilirsiniz. Bu makalede, C# kullanarak DOC veya DOCX belgelerinden nasıl metin çıkarılacağını öğreneceksiniz.
Bu makalede aşağıdaki konular tartışılmaktadır/kapsanmaktadır:
- Metin Çıkarma için C# API’si
- C# kullanarak DOCX’ten Metin Çıkarma
- C# kullanarak DOCX’ten Biçimlendirilmiş Metin Alın
- C# kullanarak Sayfalardan Biçimlendirilmiş Metni Çıkarma
Metin Çıkarma için C# API’si
DOCX belgelerinden metin çıkarmak için GroupDocs.Parser for .NET API’sini kullanacağım. Word, PDF, Excel ve Powerpoint gibi desteklenen dosya formatı belgelerinden metin, meta veri ve görsellerin çıkarılmasına olanak tanır. Ayrıca desteklenen formatlardaki dosyalardan ham, formatlanmış ve yapılandırılmış metinlerin yanı sıra meta verilerin çıkarılmasını da destekler.
API’nin DLL’sini indirebilir veya NuGet kullanarak yükleyebilirsiniz.
Install-Package GroupDocs.Parser
C# kullanarak DOCX’ten Metin Çıkarma
Aşağıda belirtilen basit adımları izleyerek herhangi bir belgeyi kolayca ayrıştırabilir ve metni çıkarabilirsiniz:
- Parser sınıfının bir örneğini oluşturun
- Dosya yolunu belirtin
- Metni ayıklamak için Parser sınıfının GetText yöntemini çağırın
- TextReader sınıfı nesnesindeki sonuçları alın
- TextReader sınıfının ReadToEnd yöntemini çağırarak sonuçları gösterin
Aşağıdaki kod örneği, C# kullanarak DOCX dosyasından nasıl metin ayıklanacağını gösterir.
// Ayrıştırıcı sınıfının bir örneğini oluşturun
Parser parser = new Parser(@"C:\Files\sample.docx");
// Bir metni okuyucuya çıkarma
using (TextReader reader = parser.GetText())
{
// Belgeden bir metin yazdırma
// Metin çıkarma desteklenmiyorsa okuyucu boştur
Console.WriteLine(reader == null ? "Text extraction isn't supported" : reader.ReadToEnd());
}
Parser sınıfı, ayrıştırma işlevselliğini ve metin ve görüntülerin çıkarılmasını sağlayan ana sınıftır. Giriş dosyası yolunu bu sınıfın yapıcı‘ünde belirttim.
Parser sınıfının GetText() yöntemi, belirtilen belgeden bir metin çıkarır.
C# kullanarak DOCX’ten Biçimlendirilmiş Metin Alın
Aşağıda belirtilen basit adımları izleyerek, stil formatını kaybetmeden Word belgesini kolayca ayrıştırabilir ve metni çıkarabilirsiniz:
- Parser sınıfının bir örneğini oluşturun
- Dosya yolunu belirtin
- FormattedTextOptions‘ı tanımlayın
- FormattedTextMode‘yı HTML olarak ayarlayın
- Metni ayıklamak için Parser sınıfının GetFormattedText yöntemini çağırın
- TextReader sınıfı nesnesindeki sonuçları alın
- TextReader sınıfının ReadToEnd yöntemini çağırarak sonuçları gösterin
Aşağıdaki kod örneği, C# kullanarak DOCX dosyasından biçimlendirilmiş metnin nasıl çıkarılacağını gösterir.
// Ayrıştırıcı sınıfının bir örneğini oluşturun
Parser parser = new Parser(@"C:\Files\sample.docx");
// Biçimlendirilmiş bir metni okuyucuya çıkarma
using (TextReader reader = parser.GetFormattedText(new FormattedTextOptions(FormattedTextMode.Html)))
{
// Belgeden biçimlendirilmiş bir metni yazdırma
// Biçimlendirilmiş metin çıkarma desteklenmiyorsa okuyucu boştur
Console.WriteLine(reader == null ? "Formatted text extraction isn't suppported" : reader.ReadToEnd());
}
FormattedTextOptions sınıfı, Mode çıkarma gibi biçimlendirilmiş metin çıkarma için kullanılan seçenekleri sağlar. Çıkarma modunu, bir belge metnini HTML olarak çıkaran HTML’ye ayarladım.
Parser sınıfının GetFormattedText() yöntemi, belirtilen belgeden biçimlendirilmiş bir metni çıkarır.
C# kullanarak Sayfalardan Biçimlendirilmiş Metni Çıkarma
Aşağıda belirtilen basit adımları izleyerek Word belgesini kolayca ayrıştırabilir ve belgenin belirli bir sayfasından biçimlendirilmiş metni çıkarabilirsiniz:
- Parser sınıfının bir örneğini oluşturun
- Dosya yolunu belirtin
- FormattedText öğesinin doğru olup olmadığını kontrol edin
- Sayfa sayısını öğrenmek için GetDocumentInfo‘u arayın
- PageCount’nin sıfır olup olmadığını kontrol edin
- FormattedTextOptions‘ı tanımlayın
- FormattedTextMode‘yı HTML olarak ayarlayın
- Metni ayıklamak amacıyla her sayfa dizini için GetFormattedText yöntemini çağırın
- TextReader sınıfı nesnesindeki sonuçları alın
- TextReader sınıfının ReadToEnd yöntemini çağırarak sonuçları gösterin
Aşağıdaki kod örneği, C# kullanarak biçimlendirilmiş metnin sayfalardan tek tek nasıl çıkarılacağını gösterir.
// Ayrıştırıcı sınıfının bir örneğini oluşturun
using (Parser parser = new Parser(@"C:\Files\sample.docx"))
{
// Belgenin biçimlendirilmiş metin çıkarmayı destekleyip desteklemediğini kontrol edin
if (!parser.Features.FormattedText)
{
Console.WriteLine("Document isn't supports formatted text extraction.");
return;
}
// Belge bilgilerini alın
IDocumentInfo documentInfo = parser.GetDocumentInfo();
// Belgede sayfa olup olmadığını kontrol edin
if (documentInfo.PageCount == 0)
{
Console.WriteLine("Document hasn't pages.");
return;
}
// Sayfalar üzerinde yineleme
for (int p = 0; p < documentInfo.PageCount; p++)
{
// Sayfa numarası yazdırma
Console.WriteLine(string.Format("Page {0}/{1}", p + 1, documentInfo.PageCount));
// Biçimlendirilmiş bir metni okuyucuya çıkarma
using (TextReader reader = parser.GetFormattedText(p, new FormattedTextOptions(FormattedTextMode.Html)))
{
// Belgeden biçimlendirilmiş bir metni yazdırma
// Biçimlendirilmiş metin çıkarma özelliği desteğini daha önce kontrol ettiğimizden boş denetimini göz ardı ediyoruz
Console.WriteLine(reader.ReadToEnd());
}
}
}
Ayrıştırıcı sınıfı, Features sınıfını temsil eden Features özelliğini sağlar. Belge için bir özelliğin desteklenip desteklenmediğini kontrol etmek için kullanılabilir. Desteklenen özellikler hakkında daha fazla bilgiyi “Desteklenen Özellikleri Alın" bölümünde okuyabilirsiniz.
Ücretsiz Lisans Alın
Ücretsiz bir geçici lisans talep ederek API’yi değerlendirme sınırlamaları olmadan deneyebilirsiniz.
Çözüm
Bu makalede, C# kullanarak Word belgelerinden nasıl metin çıkarılacağını öğrendiniz. Belgeleri kullanarak GroupDocs.Parser for .NET API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda lütfen forum üzerinden bizimle iletişime geçmekten çekinmeyin.