Tìm kiếm Python trong nhiều tệp PDF
Đây là mẫu cho ứng dụng Dockerized có thể tái sản xuất, dựa trên R, tìm từ khóa và/hoặc câu trong nhiều tệp Show
Tóm lược
Ví dụ tạo động lựcTrong nhiều tình huống, chúng tôi sử dụng Nhận quy trình làm việcCần tìm từ khóa hoặc câu từ nhiều tệp PDF? Tìm kiếm các lần xuất hiện của một chuỗi nhất định trong một loạt các tệp PDF là điều chúng tôi thấy mình làm rất thường xuyên. Nó có thể dành cho tiện ích cá nhân, chẳng hạn như tìm vé tàu cho hành trình sắp tới hoặc tiện ích kinh doanh nơi chúng tôi trích xuất một số dữ liệu từ tệp PDF. Mặc dù chúng tôi có thể mở từng tệp PDF theo cách thủ công bằng trình xem GUI và tìm kiếm chuỗi, quá trình này sẽ trở nên rất cồng kềnh khi tập hợp tệp lớn Với các công cụ dòng lệnh, chúng ta có thể dễ dàng tự động tìm kiếm một số lượng lớn tệp. Tuy nhiên, chúng tôi phải lưu ý rằng PDF là định dạng nhị phân và các lệnh tìm kiếm văn bản thuần túy như grep và sed sẽ không hoạt động như mong đợi trên các tệp PDF Trong hướng dẫn này, chúng ta sẽ xem xét một số lệnh chuyên biệt có thể được sử dụng để tìm kiếm chuỗi trong tệp PDF 2. Sử dụng pdftotextLệnh pdftotext là tiện ích chuyển đổi tệp PDF thành văn bản thuần túy. Nó được cung cấp trên hầu hết các bản phân phối Linux theo mặc định. Chúng tôi có thể sử dụng lệnh này để chuyển đổi tất cả các tệp PDF của mình thành văn bản thuần túy và sau đó chạy grep trên kết quả đầu ra là văn bản thuần túy. Đây là một quá trình gồm nhiều bước. Vì vậy, chúng tôi sẽ xem xét từng bước một và sau đó kết hợp tất cả các bước thành một lệnh duy nhất 2. 1. Chuyển đổi tệp PDF thành văn bản thuần túyChúng tôi có thể chuyển đổi một tệp PDF thành văn bản thuần túy như sau
Dấu gạch nối ở cuối được sử dụng để hướng dẫn lệnh gửi đầu ra tới thiết bị xuất chuẩn. Nếu không, nó sẽ lưu đầu ra trong một tệp văn bản. Chúng tôi sẽ cần đầu ra đi vào thiết bị xuất chuẩn để chúng tôi có thể đưa nó vào các lệnh khác để xử lý thêm 2. 2. Tìm kiếm trong tệp PDFChúng ta có thể đưa đầu ra văn bản thuần túy từ lệnh trên vào lệnh grep để tìm kiếm một chuỗi hoặc mẫu trong tệp
Chúng tôi đã thêm các cờ –with-filename và –nhãn để in tên tệp cho mỗi kết quả khớp. Cờ -i được sử dụng để thực hiện tìm kiếm không phân biệt chữ hoa chữ thường với mẫu được cung cấp. Chúng tôi có thể bỏ qua điều này để thực hiện tìm kiếm phân biệt chữ hoa chữ thường 2. 3. Tìm tất cả các tệp PDF trong thư mụcBây giờ chúng tôi đã có lệnh tìm kiếm một tệp duy nhất, chúng tôi sẽ phải lặp lại lệnh này trên tất cả các tệp PDF bằng lệnh tìm. Để bắt đầu, chúng ta chỉ cần chạy lệnh find để in tất cả các đường dẫn của tệp PDF trong thư mục hiện tại
Dấu chấm trong lệnh cho biết thư mục hiện tại và chúng ta có thể thay thế nó bằng bất kỳ đường dẫn nào khác để tìm kiếm trong. *. pdf làm đối số tên lọc tên tệp với. phần mở rộng pdf 2. 4. Kết hợp các bướcGiờ đây, chúng ta có thể sử dụng đối số exec của lệnh find để thực hiện tìm kiếm trên từng tệp và in kết quả theo tệp
Chúng ta thấy rằng lệnh find thực hiện tìm kiếm đệ quy trên các tệp PDF trong thư mục hiện tại và cả các thư mục con. Chúng ta có thể thêm đối số maxdepth để chỉ tìm kiếm thư mục hoặc chỉ bao gồm tối đa một cấp độ thư mục con được chỉ định
3. Sử dụng pdfgrepLệnh pdfgrep có thể được sử dụng để tìm kiếm các mẫu trong tệp PDF chỉ trong một bước. Tuy nhiên, nó có thể không có sẵn trên bản phân phối Linux của chúng tôi theo mặc định và chúng tôi sẽ cần cài đặt gói pdfgrep để có thể sử dụng nó. Khi chúng tôi đã thiết lập xong mọi thứ, việc sử dụng nó rất dễ dàng
Chúng tôi đã sử dụng tùy chọn H để in tên tệp, tùy chọn i cho tìm kiếm không phân biệt chữ hoa chữ thường và tùy chọn R để tìm kiếm đệ quy trong tất cả các thư mục con của thư mục đã chỉ định (thư mục hiện tại trong trường hợp này). Đầu ra từ quá trình chuyển đổi có thể hơi lộn xộn với khoảng trống lớn, như chúng ta thấy ở trên 4. Sử dụng ripgrep-allChúng ta có thể sử dụng lệnh rga từ tiện ích ripgrep-all để tìm các mẫu trong tệp PDF cũng như các định dạng tệp khác. Trong khi cài đặt gói hơi cồng kềnh, sử dụng lệnh rất đơn giản
Lệnh in tất cả các kết quả trùng khớp cùng với tên tệp cũng như số trang mà mẫu xuất hiện 5. Phần kết luậnTrong bài viết này, chúng tôi đã xem xét các phương pháp khác nhau để tìm kiếm một chuỗi hoặc một mẫu trong tập hợp các tệp PDF. Phương pháp đầu tiên của chúng tôi là một quy trình gồm nhiều bước. Nó liên quan đến việc chạy tìm để lặp lại tất cả các tệp PDF, chạy pdftotext rồi grep trên từng tệp để tìm sự xuất hiện của mẫu. Mặc dù đây là một quá trình phức tạp, nhưng nó sử dụng các lệnh đã có sẵn trên hầu hết các hệ thống theo mặc định Để thay thế cho phương pháp trên, chúng ta cũng có thể sử dụng pdfgrep và ripgrep-all. Đây là những lựa chọn thay thế một bước đơn giản hơn, nhưng chúng có thể không được cài đặt trên hệ thống của chúng tôi theo mặc định tác giả dưới cùng Nếu bạn có một vài năm kinh nghiệm trong hệ sinh thái Linux và bạn muốn chia sẻ trải nghiệm đó với cộng đồng, hãy xem Nguyên tắc đóng góp của chúng tôi Có cách nào để tìm kiếm nhiều tệp PDF cùng một lúc không?Từ menu, đi tới “Chỉnh sửa” – “Tìm kiếm nâng cao” hoặc nhấp Shift+Ctrl+F. . Chọn tùy chọn “Tất cả tài liệu PDF trong” Mở hộp trình đơn thả xuống và nhấp vào "Duyệt tìm vị trí…" để chọn thư mục đã tìm kiếm của bạn Trong trường tìm kiếm, nhập văn bản bạn muốn tìm kiếm và nhấn "Tìm kiếm. " Có cách nào để mở khóa hàng loạt nhiều tệp PDF không?Làm cách nào để dễ dàng mở khóa nhiều tệp PDF? . Mở tệp PDF trong Xem trước bằng cách nhấp chuột phải vào tệp PDF Nhập mật khẩu PDF Chuyển đến menu Tệp từ thanh menu trên cùng, sau đó nhấp vào Xuất Nhấp vào Quyền và Nhập mật khẩu Chủ sở hữu PDF của bạn, sau đó nhấp vào Áp dụng Bây giờ, hãy nhấp vào Lưu để xuất tệp PDF đã mở khóa |