大家好,这里是办公智能体广场。最近我们很有激情的研究了一个技术:如何从PDF/图片 中提取所有印章图片里的文字。
今天就把这套方案和教程做个总结。它可以在断网环境下,批量识别一批 PDF 中的印章文字,并统一汇总到一个 Excel 表里。
一、需求分析
我准备了几个PDF ,里面有一些印章,有椭圆的,模糊的,清晰的,如下3个图例:
上面总共有4个印章,识别的结果Excel如下:
印章的文字和数字都识别出来了, 效果还是不错的!!!!!
二、实现方案一:小白上手
打开鲸闲办公智能体广场,找到 “印章文字提取器”,如图:
注意,可断网使用!!!
获取: 宫中&浩气: “老罗软件”。然后将所有的 PDF或者图片 进行输入,如图:
有三个参数可以设置,我们选择默认的就可以了。
输出结果
输出结果会把所有输入文件的印章上的文字都提取出来,然后总结放到一个Excel里面,有源文件信息,印章所在页码,第几个印章,提取的文字信息等, 如图:
三、实现方案二:Python脚本
用 Python + Paddle 做 PDF / 图片批量印章文字提取,对经常要处理合同、票据、扫描档案、盖章文件的人来说,非常实用。
它适合这样的场景:一批 PDF 或图片里都有印章,需要把每个印章里的文字统一识别出来,再汇总到一个 Excel 里,方便检索、核对和归档。
优势:
- 可批量处理大量 PDF 和图片,适合成批资料整理
- 对扫描件、截图、拍照文件更友好,不依赖原始文本层
- 支持 PDF 和常见图片格式,流程统一
- 本地运行,文件不出本机,适合内部材料和敏感文件
- 可将识别结果统一汇总为 Excel,后续筛选和核对更方便
劣势:
- 需要一定 Python 基础,首次运行要安装依赖并下载模型
- 印章如果模糊、残缺、倾斜严重,识别效果会受影响
- 背景复杂、叠字、骑缝章等场景,往往还需要人工复核
- 大批量高清 PDF 处理耗时较长,对 CPU / 内存有一定压力
下面是一个简单的 Paddle 实现示例:批量读取目录下的 PDF / 图片,识别印章区域中的文字,并最终汇总到一个 Excel 文件中。
import os from pathlib import Path import pandas as pd from paddlex import create_pipeline # 输入目录,可包含多个子目录 input_root = r"path\to\your\files" # 输出目录 output_root = r"path\to\your\output" Path(output_root).mkdir(parents=True, exist_ok=True) # 支持的文件格式 SUPPORTED_EXT = {".pdf", ".png", ".jpg", ".jpeg", ".bmp", ".webp", ".tif", ".tiff"} # 创建印章识别流水线 # 不同 PaddleX 版本 API 可能略有差异,实际以当前版本文档为准 pipeline = create_pipeline(pipeline="seal_recognition") all_rows = [] def process_file(file_path: Path): ext = file_path.suffix.lower() if ext not in SUPPORTED_EXT: print(f"跳过不支持的文件:{file_path}") return print(f"识别中:{file_path}") # PDF 会按页处理,图片按单张处理 results = pipeline.predict(str(file_path)) for page_index, res in enumerate(results, start=1): # 假设返回结果里包含 seals 字段 # 每个 seal 中包含 text / score 等信息 seals = res.get("seals", []) if isinstance(res, dict) else [] if not seals: all_rows.append({ "源文件": str(file_path), "页码": page_index, "印章序号": "", "识别文字": "(未识别到印章)", "置信度": "" }) continue for seal_index, seal in enumerate(seals, start=1): all_rows.append({ "源文件": str(file_path), "页码": page_index, "印章序号": seal_index, "识别文字": seal.get("text", ""), "置信度": seal.get("score", "") }) def walk_files(root: Path): for path in root.rglob("*"): if path.is_file(): process_file(path) if __name__ == "__main__": walk_files(Path(input_root)) df = pd.DataFrame(all_rows) output_excel = Path(output_root) / "印章识别汇总.xlsx" df.to_excel(output_excel, index=False) print(f"处理完成,结果已输出:{output_excel}")四、总结
这套方案已经比较实用了:不想折腾环境,直接用现成工具就能在断网环境下批量把 PDF 或图片里的印章文字汇总到 Excel;如果材料特别多、还想自定义流程,就用 Python + Paddle 脚本。两种方式都本地运行、不改原文件,但遇到模糊、残缺、骑缝章这类复杂情况,结果还是建议人工抽检一下。