python 比对PDF文件
阅读原文时间:2023年07月10日阅读:2

基本思路:

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() 生成对比文件