基本思路:
1.读取pdf内容,存放到不同的 list
2.比较 list 的相似度
------------------------ 实现-------------------------
1.PDF 文件读取,使用库 pdfminer
def get_txt_from_pdf(path, file_name): # 获取文档对象 fp = open(os.path.join(path, file_name), "rb") # 创建一个PDF文档解释器 parser = PDFParser(fp) # PDF文档的对象 doc = PDFDocument() # 连接解释器和文档对象 parser.set_document(doc) doc.set_parser(parser) # 初始化文档 doc.initialize('') # 创建PDF资源管理器 resource = PDFResourceManager() # 参数分析器 laparam = LAParams() # 创建一个聚合器 device = PDFPageAggregator(resource, laparams=laparam) # 创建PDF页面解释器 interpreter = PDFPageInterpreter(resource, device=device) result = [] # 使用文档对象得到页面的集合 for page in doc.get_pages(): # 使用页面解释器来读取 interpreter.process_page(page) # 使用聚合器来获取内容 layout = device.get_result() for out in layout: if hasattr(out, "get_text"): result.append(out.get_text()) return result
借鉴自:https://www.cnblogs.com/banshaohuan/p/6877931.html
2.相似度比较,用 difflib 库
## 核心代码 ##
##############################
b_content = pldCommon.get_txt_from_pdf(benchmark_file_path, self.file_name) t_content = pldCommon.get_txt_from_pdf(temp_file_path, self.file_name) # 对比 diff = difflib.SequenceMatcher(None, b_content, t_content) similarity_rate = diff.ratio()
3.如果相似度不为1,自行用beyond compare对比。也可以用 difflib.HtmlDiff() 生成对比文件