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
TextFragmentAbsorberkhi bạn cần dữ liệu vị trí và chữ; sử dụngTextAbsorber- 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.PagesTì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
| Issue | Cause | Fix Đặt |
|---|---|---|
| Text được rút ra là gãy | PDF sử dụng mã hóa không chuẩn hoặc bản đồ chữ CID | Kiể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ăn | Nội dung trang là hình ảnh, không phải văn bản | Sử 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 đấu | Mô hình không tính cho whitespace được nhập bởi bố trí văn bản PDF | Tự bình thường hóa không gian trắng hoặc sử dụng mô hình looser |
TextState.Font là null | Tài nguyên font đang thiếu từ PDF | Chă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áp | Description |
|---|---|
TextAbsorber | Tắt tất cả văn bản như một dòng duy nhất |
TextFragmentAbsorber | Thu thập các đoạn văn cấu trúc với dữ liệu vị trí và chữ cái |
TextFragment | Mộ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.Text | Tích hợp text string |
TextFragment.Position | Coordinates trên trang web |
TextFragment.TextState | Font, kích thước và thông tin màu sắc |
TextFragment.Segments | - Thay vào trong fragment |
TextParagraph | Builder cho nhiều dòng văn bản blocks |
TextState | Tên chữ, kích thước, màu sắc và đặc điểm phong cách |
FontRepository | font static lookup và loading |
FontRepository.FindFont | Tìm một font theo tên |