基本思路:

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

posted on 2019-08-01 15:49  蛋尼  阅读(1351)  评论(0编辑  收藏  举报