Làm thế nào để trích xuất văn bản từ PDF trong .NET
Bài viết này cho thấy cách khai thác văn bản từ các tài liệu PDF bằng cách sử dụng Aspose.PDF Text Extractor for .NET. Bạn sẽ học cách dùng tất cả các chế độ thu được hỗ trợ - Pure, Raw, và Plain - và tự động lưu thông công việc cho một hoặc nhiều PDF.
Vấn đề thế giới thực
Tự động sao chép văn bản từ PDF là không hiệu quả và sai lầm. Đối với các ứng dụng trong phân tích dữ liệu, di chuyển tài liệu hoặc lưu trữ, bản sao tự động đảm bảo sự nhất quán, tốc độ và độ chính xác.
Giải pháp Overview
Aspose.PDF Text Extractor for .NET cung cấp một giao diện sạch, có thể lập trình để lấy văn bản trong các định dạng khác nhau.Chọn giữa chế độ Pure, Raw, và Plain để phù hợp với trường hợp sử dụng của bạn - cho dù bạn cần kết quả định hình, dữ liệu nguyên liệu, hoặc nội dung thẳng.
Nguyên tắc
- Visual Studio 2019 hoặc hơn
- .NET 6.0 hoặc mới hơn
- Aspose.PDF cho .NET cài đặt qua NuGet
PM> Install-Package Aspose.PDF
Chế độ thực hiện từng bước
Bước 1: Cài đặt và cấu hình Aspose.PDF
using Aspose.Pdf.Plugins;
using System.IO;
Bước 2: Xóa văn bản bằng chế độ mặc định (Raw)
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(); // Raw mode by default
options.AddInput(new FileDataSource("input.pdf"));
var resultContainer = extractor.Process(options);
string textExtracted = resultContainer.ResultCollection[0].ToString();
Console.WriteLine(textExtracted);
}
Bước 3: Tích xuất văn bản trong chế độ sạch hoặc thẳng
- Chuyển chế độ: Giữ vị trí tương đối và thêm không gian để phù hợp.
- Tình trạng kế hoạch: Bảng định dạng, xuất bản văn bản với không gian tối thiểu.
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Pure); // Or .Plain
options.AddInput(new FileDataSource("input.pdf"));
var resultContainer = extractor.Process(options);
string textExtracted = resultContainer.ResultCollection[0].ToString();
Console.WriteLine(textExtracted);
}
Sử dụng trường hợp và ứng dụng (với biến thể mã)
1. Batch Extract Text từ nhiều PDF
string[] files = Directory.GetFiles(@"C:\PDFs", "*.pdf");
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Pure);
foreach (var file in files)
options.AddInput(new FileDataSource(file));
var resultContainer = extractor.Process(options);
for (int i = 0; i < resultContainer.ResultCollection.Count; i++)
{
string extracted = resultContainer.ResultCollection[i].ToString();
// Save to disk, process, or analyze as needed
File.WriteAllText($@"C:\PDFs\out\{Path.GetFileNameWithoutExtension(files[i])}.txt", extracted);
}
}
2. Chọn chế độ khai thác dựa trên trường hợp sử dụng
- Sử dụng Pure cho bố trí giống như bảng hoặc định dạng không gian.
- Sử dụng Plain để thu thập hoặc phân tích dữ liệu sạch.
- Sử dụng Raw cho văn bản không được xử lý.
3. Post-process Text Extracted Bài viết được rút ra
Sau khi khai thác, áp dụng regex, làm sạch văn bản, hoặc gửi kết quả cho các dịch vụ khác (các tìm kiếm, đường ống ML, vv).
4. Kết hợp khai thác với đường ống dữ liệu
Tự động khai thác như một phần của một dòng công việc ETL rộng hơn, báo cáo, hoặc quản lý tài liệu bằng cách sử dụng các thực tiễn .NET tiêu chuẩn.
Những thách thức và giải pháp chung
Thách thức: Kết quả không phù hợp do cấu trúc PDF phức tạpGiải pháp: Cố gắng các chế độ khai thác khác nhau (Tự nhiên, Tốt, Raw) và so sánh kết quả.
Thách thức: Tốc độ khai thác Batch Giải pháp: Sử dụng một TextExtractor
Ví dụ và xử lý nhiều tệp trong một lần chạy cho hiệu suất tốt nhất.
Thách thức: Các nhân vật đặc biệt hoặc các vấn đề mã hóaGiải pháp: Sử dụng chế độ thẳng để định dạng tối thiểu, sau đó áp dụng xử lý string tùy chỉnh theo yêu cầu.
Hiệu suất và thực hành tốt nhất
- Kiểm tra tất cả ba chế độ khai thác để xác định kết quả tối ưu cho loại tài liệu của bạn
- Lưu PDF gốc trước khi thực hiện các hoạt động
- Giao dịch danh hiệu sản xuất và tổ chức trong công việc hàng loạt
- Quản lý lỗi tích hợp và đăng ký cho độ bền
Một ví dụ thực hiện đầy đủ
using Aspose.Pdf.Plugins;
using System;
using System.IO;
class Program
{
static void Main()
{
using (var extractor = new TextExtractor())
{
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Plain);
options.AddInput(new FileDataSource(@"C:\PDFs\input.pdf"));
var resultContainer = extractor.Process(options);
string textExtracted = resultContainer.ResultCollection[0].ToString();
File.WriteAllText(@"C:\PDFs\output.txt", textExtracted);
}
}
}
Kết luận
Aspose.PDF Text Extractor for .NET cung cấp cho bạn các công cụ mạnh mẽ, linh hoạt để extract văn bản trong nhiều định dạng – phù hợp để xử lý dữ liệu, lưu trữ, hoặc phân tích.