पाठ निष्कर्षण
पाठ निष्कर्षण
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 garbled | PDF एक गैर-मानक एन्कोडिंग या 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 | नाम द्वारा फ़ॉन्ट खोजें |