Làm cách nào để trích xuất văn bản từ tệp PDF bằng Python?Làm cách nào để trích xuất văn bản từ tệp PDF bằng Python?
tôi thử như sau:
import sys
import pyPdf
def convertPdf2String(path):
content = ""
pdf = pyPdf.PdfFileReader(file(path, "rb"))
for i in range(0, pdf.getNumPages()):
content += pdf.getPage(i).extractText() + " \n"
content = " ".join(content.replace(u"\xa0", u" ").strip().split())
return content
f = open('a.txt','w+')
f.write(convertPdf2String(sys.argv[1]).encode("ascii","xmlcharrefreplace"))
f.close()
Nhưng kết quả được như sau, chứ không phải là văn bản có thể đọc được:
728; ˇ ˆ ˜ ˚ ˇ ˇ! "˙" ˘ ˇ ˆ ˙ ˆ ˝ ˛ ˛ ˛ ˛ ˆ ˜ ˆ ˆ ˆ ˘ ˆ ˛ ˙ ˆ "ˆ ˘" ˆ ˆ ˆ ˜ # $˚ ˆ% & ˆ ˘ ˛ ˆ ˜ '˙ ˙% ˝ ˛ ˆ ˇ ˙ ˜ ˆ ˆ ˜' ˆ ˇ ˆ # $% & ('% $ &)) $ $ +% #, -. + & & ˝()) ˝) ˝ + ,, -./012) (˝) * ˝ +, - 3 ˙ ˆ/0245) 6 # 57 + 82,55) 6 # 57 +, + 2, + /! # !! & ˘ ˘ 1" % 07% 4 ˘! "6 ˛ ˆ ˝ ˆ ˆ ˘ &/& 4" 9 ˆ% 6 ˇ% 4% 4 2) ˘ ˘ ˛%: 6 (
Tệp PDF không nhất thiết phải chứa văn bản (xuất hiện như vậy) theo cách hợp lý có thể xuất được vì công cụ tạo PDF có thể xử lý văn bản. Không có đảm bảo rằng bạn có thể trích xuất như một toàn thể như bạn muốn nó. Tôi cho rằng tệp PDF của bạn là một trong những tệp PDF trông đẹp mắt nhưng theo cách bạn có thể trích xuất nội dung theo cách hợp lý. –
Tôi nghĩ rằng đây là vấn đề tương tự như tôi đã có ở đây: [link] (http://stackoverflow.com/questions/14474405/indexing-pdf-from-badly-authored-latex-source). Nếu bạn cần thông tin chứa trong tập tin PDF như vậy, tốt nhất bạn nên đặt TIFF (tức là với ghostscript) và làm OCR (tức là tesseract). – theta