חילוץ טקסט
חילוץ טקסט
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}");
}חיפוש עם ביטויים רגולריים
העבר תבנית regex ל-TextFragmentAbsorber כדי למצוא טקסט ספציפי.
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. - עבור מסמכים גדולים, עבד עמודים אחד אחרי השני כדי לנהל את השימוש בזיכרון.
בעיות נפוצות
| Issue | Cause | Fix |
|---|---|---|
| הטקסט המופק מעוות | PDF משתמש בקידוד לא סטנדרטי או במיפוי גופן CID | בדוק הטמעת גופנים; חלק מה‑PDFים הסרוקים דורשים OCR |
| לא נמצאו קטעי טקסט | תוכן העמוד הוא תמונה, לא טקסט | השתמש בכלי OCR כדי להמיר תחילה דפי תמונה לטקסט |
| Regex מחזיר ללא התאמות | התבנית אינה מתחשבת ברווחים המוכנסים על‑ידי פריסת טקסט של PDF | נרמל רווחים או השתמש בתבנית רפויה יותר |
TextState.Font הוא 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 | מציאת גופן לפי שם |