Bạn có thể trích xuất văn bản từ các tọa độ cụ thể của tài liệu PDF bằng cách sử dụng quy trình OCR ở phía máy chủ như một giải pháp thay thế. Tham khảo đoạn mã sau cho cùng Show Ghi chú Nhấp vào nút trích xuất văn bản trong ví dụ trên sẽ xuất trang tài liệu PDF dưới dạng hình ảnh bằng cách sử dụng phương thức ExportAsImage trong PdfLoadedDocument, hình ảnh kết quả sau đó được cắt bớt với hình chữ nhật được cung cấp. Sau đó, hình ảnh đã cắt được OCRed để lấy văn bản từ hình ảnh. Nhiều bài đăng về Stack Overflow khác đề cập đến cách trích xuất tất cả văn bản theo thứ tự, nhưng làm cách nào tôi có thể thực hiện bước trung gian để lấy văn bản và vị trí văn bản? Đưa ra một tệp PDF, đầu ra sẽ trông giống như
Tiết lộ đầy đủ, tôi là một trong những người duy trì pdfminer. sáu. Đây là phiên bản pdfminer do cộng đồng duy trì cho python 3 Ngày nay, pdfminer. sáu có nhiều API để trích xuất văn bản và thông tin từ PDF. Để trích xuất thông tin theo chương trình, tôi khuyên bạn nên sử dụng Ví dụ sau đây là một cách Pythonic để hiển thị tất cả các phần tử trong cấu trúc phân cấp. Nó sử dụng đơn giản1. pdf từ thư mục mẫu của pdfminer. sáu
Đầu ra hiển thị các phần tử khác nhau trong cấu trúc phân cấp. Hộp giới hạn cho mỗi. Và văn bản mà phần tử này chứa To extract coordinates or location and size of characters in pdf, we shall extend the PDFTextStripper class, intercept and implement writeString(String string, List Lớp tổ chức. apache. hộp pdf. dòng nội dung. PDFTextStripper loại bỏ tất cả văn bản List Các bước để trích xuất tọa độ của các ký tự trong PDFSau đây là quy trình từng bước để trích xuất tọa độ hoặc vị trí của các ký tự trong PDF 1. Mở rộng PDFTextStripperTạo một Lớp Java và mở rộng nó bằng PDFTextStripper public class GetCharLocationAndSize extends PDFTextStripper { . . . } 2. Gọi phương thức writeTextĐặt ranh giới trang (từ trang đầu tiên đến trang cuối cùng) để tách văn bản và gọi phương thức writeText() PDFTextStripper stripper = new GetCharLocationAndSize(); stripper.setSortByPosition( true ); stripper.setStartPage( 0 ); stripper.setEndPage( document.getNumberOfPages() ); Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream()); stripper.writeText(document, dummy); 3. Ghi đè writeStringphương thức writeString nhận thông tin về vị trí văn bản của các ký tự trong luồng. Chúng ta sẽ ghi đè phương thức writeString như hình bên dưới @Override protected void writeString(String string, List<TextPosition> textPositions) throws IOException { . . . } 4. Vị trí và Kích thước InĐối với mỗi mục trong danh sách TextPosition dành cho một ký tự riêng lẻ, hãy in tọa độ và kích thước Ví dụ 1 – Trích xuất Tọa độ hoặc Vị trí của Ký tự trong PDFTrong ví dụ này, chúng tôi sẽ lấy một tệp PDF có văn bản và trích xuất tọa độ (X, Y) của các ký tự GetCharLocationAndSize. java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.text.TextPosition; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.List; /** * This is an example on how to get the x/y coordinates and size of each character in PDF */ public class GetCharLocationAndSize extends PDFTextStripper { public GetCharLocationAndSize() throws IOException { } /** * @throws IOException If there is an error parsing the document. */ public static void main( String[] args ) throws IOException { PDDocument document = null; String fileName = "apache.pdf"; try { document = PDDocument.load( new File(fileName) ); PDFTextStripper stripper = new GetCharLocationAndSize(); stripper.setSortByPosition( true ); stripper.setStartPage( 0 ); stripper.setEndPage( document.getNumberOfPages() ); Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream()); stripper.writeText(document, dummy); } finally { if( document != null ) { document.close(); } } } /** * Override the default functionality of PDFTextStripper.writeString() */ @Override protected void writeString(String string, List<TextPosition> textPositions) throws IOException { for (TextPosition text : textPositions) { System.out.println(text.getUnicode()+ " [(X=" + text.getXDirAdj() + ",Y=" + text.getYDirAdj() + ") height=" + text.getHeightDir() + " width=" + text.getWidthDirAdj() + "]"); } } } đầu ra 2 [(X=26.004425,Y=22.003723) height=5.833024 width=5.0907116] 0 [(X=31.095137,Y=22.003723) height=5.833024 width=5.0907116] 1 [(X=36.18585,Y=22.003723) height=5.833024 width=5.0907097] 7 [(X=41.276558,Y=22.003723) height=5.833024 width=5.0907097] - [(X=46.367268,Y=22.003723) height=5.833024 width=2.8872108] 8 [(X=49.25448,Y=22.003723) height=5.833024 width=5.0907097] - [(X=54.34519,Y=22.003723) height=5.833024 width=2.8872108] 6 [(X=57.2324,Y=22.003723) height=5.833024 width=5.0907097] W [(X=226.4448,Y=22.003723) height=5.833024 width=7.911499] e [(X=233.88747,Y=22.003723) height=5.833024 width=4.922714] l [(X=238.81018,Y=22.003723) height=5.833024 width=2.2230377] c [(X=241.03322,Y=22.003723) height=5.833024 width=4.399185] o [(X=245.4324,Y=22.003723) height=5.833024 width=4.895355] m [(X=250.32776,Y=22.003723) height=5.833024 width=7.7943115] e [(X=258.12207,Y=22.003723) height=5.833024 width=4.922699] Tải tài liệu PDF tại đây apache. pdf nếu bạn muốn sử dụng cùng một tệp PDF. Nếu không, bạn có thể gán tên tệp trong chương trình Java với đường dẫn tệp PDF của mình Phần kết luậnTrong Hướng dẫn PDFBox này, chúng ta đã học cách trích xuất tọa độ hoặc vị trí của các ký tự trong tài liệu PDF và cũng là cách trích xuất Unicode, tọa độ X, tọa độ Y, chiều cao, chiều rộng, giá trị tỷ lệ x, giá trị tỷ lệ y, cỡ chữ, khoảng trắng Làm cách nào để trích xuất thông tin từ PDF bằng Python?Đối tượng trang có chức năng extract_text() để trích xuất văn bản từ trang pdf.
Làm cách nào để trích xuất dữ liệu từ PDF bằng pypdf2 trong Python?Để trích xuất văn bản, chúng tôi sẽ đọc tệp và tạo một đối tượng PDF của tệp. Sau đó, chúng ta sẽ tạo một đối tượng lớp PDFReader và truyền Đối tượng tệp PDF cho nó. Và cuối cùng, chúng tôi sẽ trích xuất từng trang và nối văn bản của từng trang |