Trích xuất Văn bản

Trích xuất Văn bản

Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from PDF trang. TextFragmentAbsorber là công cụ chính — nó quét nội dung trang và trở lại cấu trúc TextFragment Các đối tượng với vị trí, font và phong cách thông tin .


Text Extraction Tác giả

TextAbsorber - Tắt tất cả văn bản từ một trang hoặc tài liệu như một dòng duy nhất.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Tích hợp Text Fragments

TextFragmentAbsorber - Có kết quả cấu trúc, mỗi TextFragment bao gồm văn bản được rút ra, vị trí trên trang và chi tiết chữ cái.

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}");
}

Tìm kiếm với các biểu hiện thường xuyên

Gửi mẫu Regex để TextFragmentAbsorber Tìm văn bản cụ thể.

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}");
}

Text Segments Phần văn bản

Each TextFragment Có thể chứa nhiều TextSegment Các đối tượng khi văn bản Các phím khác nhau chạy.

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

Font quản lý

FontRepository cung cấp phương pháp để tìm và tải các phông chữ.

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

Xây dựng đoạn văn bản

TextParagraph cho phép xây dựng các khối văn bản đa tuyến để nhập vào Một trang.

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

Mẹo và Thực hành Tốt nhất

  • Sử dụng TextFragmentAbsorber khi bạn cần dữ liệu vị trí và chữ; sử dụng TextAbsorber - Tính năng của Extraction Text.
  • Nhận bộ hấp thụ trên một trang để có kết quả nhanh hơn, hoặc doc.Pages Tìm kiếm toàn bộ tài liệu.
  • Tìm kiếm biểu hiện thường xuyên là trường hợp nhạy cảm theo mặc định — sử dụng (?i) - Tính năng cho sự phù hợp không nhạy cảm.
  • Check TextState.Font.IsEmbedded để xác định xem một phông chữ có được nhúng vào PDF hay không.
  • Đối với các tài liệu lớn, xử lý trang một lần để quản lý sử dụng bộ nhớ.

Các vấn đề thường gặp

IssueCauseFix Đặt
Text được rút ra là gãyPDF sử dụng mã hóa không chuẩn hoặc bản đồ chữ CIDKiểm tra phông chữ; một số PDF quét yêu cầu OCR
Không tìm thấy đoạn vănNội dung trang là hình ảnh, không phải văn bảnSử dụng công cụ OCR để chuyển đổi các trang hình ảnh thành văn bản đầu tiên
Regex không quay lại trận đấuMô hình không tính cho whitespace được nhập bởi bố trí văn bản PDFTự bình thường hóa không gian trắng hoặc sử dụng mô hình looser
TextState.Font là nullTài nguyên font đang thiếu từ PDFChăm sóc kiểm tra số không khi kiểm soát các thuộc tính chữ cái

FAQ

Tôi có thể lấy văn bản từ một khu vực cụ thể của một trang không?

☆ Set TextFragmentAbsorber.TextSearchOptions.Rectangle Giới hạn tìm kiếm đến một khu vực cụ thể của trang.

Tác phẩm thu âm có bảo vệ lệnh đọc không?

Thư viện trả về văn bản theo thứ tự dòng nội dung. Đối với các bố trí đa cột, bạn có thể cần sắp xếp các mảnh theo vị trí.

Tôi có thể lấy văn bản từ tất cả các trang cùng một lúc không?

Có. gọi doc.Pages.Accept(absorber) Tìm kiếm mỗi trang trong tài liệu.


Tóm tắt Tham chiếu API

Class / Phương phápDescription
TextAbsorberTắt tất cả văn bản như một dòng duy nhất
TextFragmentAbsorberThu thập các đoạn văn cấu trúc với dữ liệu vị trí và chữ cái
TextFragmentMột văn bản chạy với vị trí, trạng thái văn Bản và các phân đoạn
TextFragment.TextTích hợp text string
TextFragment.PositionCoordinates trên trang web
TextFragment.TextStateFont, kích thước và thông tin màu sắc
TextFragment.Segments- Thay vào trong fragment
TextParagraphBuilder cho nhiều dòng văn bản blocks
TextStateTên chữ, kích thước, màu sắc và đặc điểm phong cách
FontRepositoryfont static lookup và loading
FontRepository.FindFontTìm một font theo tên

See Also

 Tiếng Việt