Làm cách nào để đọc các thuộc tính/siêu dữ liệu như Tiêu đề, Tác giả, Chủ đề và Từ khóa được lưu trữ trên tệp pdf bằng python?Đọc các thuộc tính/siêu dữ liệu pdf trong python
Trả lời
Hãy thử pdfminer:
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
fp = open('diveintopython.pdf', 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
print doc.info # The "Info" metadata
Dưới đây là kết quả:
>>> [{'CreationDate': 'D:20040520151901-0500',
'Creator': 'DocBook XSL Stylesheets V1.52.2',
'Keywords': 'Python, Dive Into Python, tutorial, object-oriented, programming, documentation, book, free',
'Producer': 'htmldoc 1.8.23 Copyright 1997-2002 Easy Software Products, All Rights Reserved.',
'Title': 'Dive Into Python'}]
Mọi chi tiết, nhìn vào hướng dẫn này: A lightweight XMP parser for extracting PDF metadata in Python.
Tôi đã triển khai điều này bằng cách sử dụng pyPdf. Vui lòng xem mã mẫu bên dưới.
from pyPdf import PdfFileReader
pdf_toread = PdfFileReader(open("doc2.pdf", "rb"))
pdf_info = pdf_toread.getDocumentInfo()
print str(pdf_info)
Output:
{'/Title': u'Microsoft Word - Agnico-Eagle - Complaint (00040197-2)', '/CreationDate': u"D:20111108111228-05'00'", '/Producer': u'Acrobat Distiller 10.0.0 (Windows)', '/ModDate': u"D:20111108112409-05'00'", '/Creator': u'PScript5.dll Version 5.2.2', '/Author': u'LdelPino'}
Lưu ý: pyPdf homepage nói nó không còn được duy trì.
Không sử dụng 'tệp', sử dụng' mở' để thay thế. –
Lưu ý rằng pyPdf được đánh dấu trên trang chủ không được hỗ trợ nữa. –
Đối với Python 3 thấy PyPDF2 với ví dụ mã từ @Khaleel cập nhật thành:
from PyPDF2 import PdfFileReader
pdf_toread = PdfFileReader(open("test.pdf", "rb"))
pdf_info = pdf_toread.getDocumentInfo()
print(str(pdf_info))
Cài đặt sử dụng pip install PyPDF2
.
Đối với Python 3 và pdfminer mới (pip cài đặt pdfminer3k):
import os
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfparser import PDFDocument
fp = open("foo.pdf", 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
parser.set_document(doc)
doc.set_parser(parser)
if len(doc.info) > 0:
info = doc.info[0]
print(info)
- 1. Đọc các khối dữ liệu từ một tệp trong Python
- 2. Đọc Tài liệu PDF trong Android
- 3. Đọc/sửa đổi siêu dữ liệu PDF bằng iTextSharp
- 4. Đọc dữ liệu đệ quy của Python
- 5. Đọc tài liệu PDF trong .Net
- 6. Đọc PDF trong C#
- 7. Tạo một tệp PDF tài liệu Python
- 8. Xuất dữ liệu vào pdf
- 9. Python: Tìm kiếm/đọc dữ liệu nhị phân
- 10. Các cách khác nhau để đọc dữ liệu lớn trong python
- 11. Cách đọc một khung dữ liệu của các chuỗi được mã hóa từ csv trong python
- 12. Làm cách nào để đọc dữ liệu cx_Oracle.LOB bằng Python?
- 13. Cách đọc pdf trong android
- 14. Thêm siêu dữ liệu vào PDF
- 15. Đọc dữ liệu từ DataGridView trong C#
- 16. Ẩn dữ liệu trong lớp Python
- 17. Cách đọc dữ liệu hdf trong Octave
- 18. SelectListItem với các thuộc tính dữ liệu
- 19. Đọc biểu mẫu dữ liệu trong ActionFilterAttribute
- 20. Đọc dữ liệu GPS RINEX với Pandas
- 21. Cấu trúc dữ liệu trong Python
- 22. Chia sẻ dữ liệu giữa các quy trình trong Python
- 23. Điền dữ liệu bảng từ trình đọc dữ liệu
- 24. WCF Đọc dữ liệuTên thuộc tính Tên
- 25. Đọc cấu hình Celery từ tệp thuộc tính Python
- 26. Cách đưa trang vào PDF trong tài liệu PDF bằng Python
- 27. SQLite: cơ sở dữ liệu chỉ đọc
- 28. Thay đổi siêu dữ liệu của tệp pdf bằng pypdf
- 29. Viết siêu dữ liệu để một pdf sử dụng PyObjC
- 30. Đọc các Dịch vụ Phân tích SQL Siêu dữ liệu
Một heads-up: tác giả của pdfminer nói nó không tương thích với Python 3, ít nhất kể từ ngày của bài viết này ([link] (https://github.com/euske/pdfminer/)) – JSmyth
Kể từ tháng 11 năm 2013, "Lớp PDFDocument hiện nhận đối tượng PDFParser làm đối số. PDFDocument.set_parser() và PDFParser.set_document() bị xóa". Vì vậy, bạn chỉ có thể làm doc = PDFDocument (parser), và bỏ qua các cuộc gọi đến set_document, set_parser, và khởi tạo. –
@JSmyth [Chỉ số PyPi] (https://pypi.python.org/pypi?%3Aaction=search&term=pdfminer&submit=search) hiện liệt kê ba nhánh «pdfminer' hoạt động tương thích với Python 3.' pip search pdfminer' – zero2cx