Phân tích cú pháp PDF bằng Python - trích xuất văn bản có định dạng và văn bản thuần túy [đã đóng]


82

Tôi đang tìm một thư viện PDF cho phép tôi trích xuất văn bản từ tài liệu PDF. Tôi đã xem xét PyPDF và điều này có thể trích xuất văn bản từ tài liệu PDF rất độc đáo. Vấn đề với điều này là nếu có các bảng trong tài liệu, văn bản trong các bảng sẽ được trích xuất cùng dòng với phần còn lại của văn bản tài liệu. Điều này có thể có vấn đề vì nó tạo ra các phần văn bản không hữu ích và trông bị cắt xén (ví dụ: rất nhiều số được trộn với nhau).

Tôi muốn trích xuất văn bản từ tài liệu PDF, ngoại trừ bất kỳ bảng nào và định dạng đặc biệt nào. Có thư viện nào làm điều này không?

Câu trả lời:


61

Bạn cũng có thể xem qua PDFMiner (hoặc đối với các phiên bản Python cũ hơn, hãy xem PDFMinerPDFMiner ).

Một tính năng đặc biệt đáng quan tâm trong PDFMiner là bạn có thể kiểm soát cách nó nhóm lại các phần văn bản khi giải nén chúng. Bạn làm điều này bằng cách chỉ định khoảng cách giữa các dòng, từ, ký tự, v.v. Vì vậy, có thể bằng cách điều chỉnh điều này, bạn có thể đạt được những gì bạn muốn (điều đó phụ thuộc vào sự thay đổi của tài liệu của bạn). PDFMiner cũng có thể cung cấp cho bạn vị trí của văn bản trong trang, nó có thể trích xuất dữ liệu bằng ID đối tượng và những thứ khác. Vì vậy, hãy tìm hiểu PDFMiner và sáng tạo!

Nhưng vấn đề của bạn thực sự không phải là một vấn đề dễ giải quyết bởi vì, trong một tệp PDF, văn bản không liên tục, mà được tạo ra từ rất nhiều nhóm ký tự nhỏ được định vị tuyệt đối trong trang. Trọng tâm của PDF là giữ nguyên bố cục. Nó không định hướng nội dung mà là định hướng trình bày.


1
PDFMiner trông thú vị. Tôi có thể sử dụng đầu ra XML từ nó, và sau đó phân tích cú pháp đó để bỏ qua những gì tôi không muốn. Điều này vẫn yêu cầu xử lý hậu kỳ đáng kể, nhưng hiện tại có lẽ đó là giải pháp tốt nhất. Cảm ơn bạn.
Mike Cialowicz

@Etienne, có thể sử dụng điều này nếu PDF cũng có các ký tự ngôn ngữ khác không?
Sahil Mittal

Nó sẽ hoạt động với các ký tự ngôn ngữ khác. Tài liệu đề cập: hỗ trợ ngôn ngữ CJK và tập lệnh viết dọc. Cách tốt nhất để chắc chắn, hãy kiểm tra nó!
Etienne

1
Các pdfminer.six cổng Python 3 của PDFMiner đang làm việc tốt cho tôi
Hamish

1
Bắt đầu từ phiên bản 20191010, PDFMiner hỗ trợ chỉ Python 3
fantabolous

0

Đó là một vấn đề khó giải quyết vì các tệp PDF tương tự về mặt hình ảnh có thể có cấu trúc rất khác biệt tùy thuộc vào cách chúng được tạo ra. Trong trường hợp xấu nhất, về cơ bản, thư viện cần phải hoạt động như một OCR. Mặt khác, PDF có thể chứa đủ cấu trúc và siêu dữ liệu để dễ dàng xóa các bảng và số liệu, mà thư viện có thể được điều chỉnh để tận dụng lợi thế của nó.

Tôi khá chắc chắn rằng không có công cụ mã nguồn mở nào giải quyết được vấn đề của bạn cho nhiều loại PDF, nhưng tôi nhớ đã nghe nói về phần mềm thương mại tuyên bố sẽ làm chính xác những gì bạn yêu cầu. Tôi chắc chắn rằng bạn sẽ gặp họ trong khi googling.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.