पाठ निष्कर्षण

पाठ निष्कर्षण

Aspose.PDF FOSS for .NET PDF पृष्ठों से टेक्स्ट निकालने के कई तंत्र प्रदान करता है। TextFragmentAbsorber मुख्य उपकरण है — यह पृष्ठ सामग्री को स्कैन करता है और स्थिति, फ़ॉन्ट और शैली जानकारी के साथ संरचित TextFragment ऑब्जेक्ट्स लौटाता है।


बेसिक टेक्स्ट निष्कर्षण

TextAbsorber पृष्ठ या दस्तावेज़ से सभी पाठ को एकल स्ट्रिंग के रूप में निकालता है।

using var doc = Document.Open(pdfBytes);

var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);

string pageText = absorber.Text;

टेक्स्ट फ्रैगमेंट निकालना

TextFragmentAbsorber संरचित परिणाम प्रदान करता है। प्रत्येक TextFragment में निकाले गए पाठ, पृष्ठ पर उसकी स्थिति, और फ़ॉन्ट विवरण शामिल होते हैं।

using var doc = Document.Open(pdfBytes);

var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}

नियमित अभिव्यक्तियों के साथ खोज

विशिष्ट पाठ खोजने के लिए TextFragmentAbsorber को एक regex पैटर्न पास करें।

var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);  // Search all pages

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

पाठ खंड

प्रत्येक TextFragment में कई TextSegment वस्तुएँ हो सकती हैं जब पाठ विभिन्न फ़ॉन्ट रन में फैला हो।

foreach (var fragment in absorber.TextFragments)
{
    foreach (var segment in fragment.Segments)
    {
        Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
    }
}

फ़ॉन्ट प्रबंधन

FontRepository फ़ॉन्ट खोजने और लोड करने के लिए मेथड्स प्रदान करता है।

var font = FontRepository.FindFont("Helvetica");

टेक्स्ट पैराग्राफ बनाना

TextParagraph पृष्ठ में सम्मिलन के लिए बहु‑लाइन टेक्स्ट ब्लॉकों का निर्माण करने की अनुमति देता है।

var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));

टिप्स और सर्वोत्तम प्रथाएँ

  • जब आपको पोज़िशन और फ़ॉन्ट डेटा चाहिए तो TextFragmentAbsorber का उपयोग करें; साधारण टेक्स्ट निष्कर्षण के लिए TextAbsorber का उपयोग करें।
  • तेज़ परिणामों के लिए एक पृष्ठ पर एब्जॉर्बर स्वीकार करें, या पूरे दस्तावेज़ को खोजने के लिए doc.Pages पर।
  • रेगुलर एक्सप्रेशन खोज डिफ़ॉल्ट रूप से केस‑सेंसिटिव होती है — केस‑इंसेंसिटिव मिलान के लिए (?i) प्रीफ़िक्स का उपयोग करें।
  • यह निर्धारित करने के लिए TextState.Font.IsEmbedded जांचें कि क्या फ़ॉन्ट PDF में एम्बेडेड है।
  • बड़े दस्तावेज़ों के लिए, मेमोरी उपयोग को प्रबंधित करने हेतु पृष्ठों को एक बार में एक प्रोसेस करें।

सामान्य समस्याएँ

समस्याकारणसमाधान
Extracted text is garbledPDF एक गैर-मानक एन्कोडिंग या CID फ़ॉन्ट मैपिंग का उपयोग करता हैफ़ॉन्ट एम्बेडिंग की जाँच करें; कुछ स्कैन किए गए PDF को OCR की आवश्यकता होती है
No text fragments foundपेज की सामग्री एक छवि है, टेक्स्ट नहींपहले इमेज पेज को टेक्स्ट में बदलने के लिए OCR टूल का उपयोग करें
Regex returns no matchesपैटर्न PDF टेक्स्ट लेआउट द्वारा डाली गई व्हाइटस्पेस को ध्यान में नहीं रखताव्हाइटस्पेस को सामान्य करें या अधिक ढीला पैटर्न उपयोग करें
TextState.Font is nullफ़ॉन्ट रिसोर्स PDF से गायब हैफ़ॉन्ट प्रॉपर्टीज़ की जांच करते समय null चेक को संभालें

अक्सर पूछे जाने वाले प्रश्न

क्या मैं पृष्ठ के किसी विशिष्ट क्षेत्र से पाठ निकाल सकता हूँ?

हाँ। TextFragmentAbsorber.TextSearchOptions.Rectangle सेट करें ताकि खोज को पृष्ठ के एक विशिष्ट क्षेत्र तक सीमित किया जा सके।

क्या टेक्स्ट निष्कर्षण पढ़ने के क्रम को बनाए रखता है?

लाइब्रेरी कंटेंट-स्ट्रीम क्रम में टेक्स्ट लौटाती है। मल्टी‑कॉलम लेआउट के लिए, आपको फ्रैगमेंट को स्थिति के अनुसार सॉर्ट करने की आवश्यकता हो सकती है।

क्या मैं सभी पृष्ठों से एक साथ टेक्स्ट निकाल सकता हूँ?

हाँ। doc.Pages.Accept(absorber) को कॉल करके दस्तावेज़ में प्रत्येक पृष्ठ को खोजें।


API रेफ़रेंस सारांश

क्लास / मेथडविवरण
TextAbsorberसभी टेक्स्ट को एकल स्ट्रिंग के रूप में निकालता है
TextFragmentAbsorberस्थिति और फ़ॉन्ट डेटा के साथ संरचित टेक्स्ट फ्रैगमेंट निकालता है
TextFragmentस्थिति, टेक्स्ट स्थिति, और सेगमेंट्स के साथ एक टेक्स्ट रन
TextFragment.Textनिकाला गया टेक्स्ट स्ट्रिंग
TextFragment.Positionपृष्ठ पर निर्देशांक
TextFragment.TextStateफ़ॉन्ट, आकार, और रंग की जानकारी
TextFragment.Segmentsफ़्रैगमेंट के भीतर सब-रन
TextParagraphबहु-लाइन टेक्स्ट ब्लॉक्स के लिए बिल्डर
TextStateफ़ॉन्ट नाम, आकार, रंग, और शैली गुण
FontRepositoryस्थैतिक फ़ॉन्ट लुकअप और लोडिंग
FontRepository.FindFontनाम द्वारा फ़ॉन्ट खोजें

संबंधित देखें

 हिन्दी