把「已嵌签名的 PDF」(Word 嵌好签名 → Save As PDF)仿真成富士施乐 ApeosPort-V C5575 T2 扫描件质感,用于日常行政替代物理打印 + 扫描。
- 300dpi、单色 1-bit(黑/白二值),无抖动、无灰阶
- PDF 1.3,无旋转、无外框
- 文字笔画边缘缺墨白点、渗墨黑点(黑白交界对称随机翻转)
- 表格横/竖线外缘离散黑色毛刺 + 短段断墨缺口(不连成平行虚线/叠线)
- 毛刺整页均匀分布,签名因面积小自然毛刺少
- 元数据洗成真机叙事:
Producer/Creator=ApeosPort-V C5575 T2,时区 +08
依赖 Python 3.11+ 与以下库:
pip install -r requirements.txt依赖清单(已锁定版本):pymupdf / pillow / numpy / opencv-python。
# 基本:源.pdf 目标.pdf(目标可省略,默认覆盖式生成 1-1.pdf 之类测试名不推荐)
python scan_sim.py <源>.pdf <目标>.pdf
# 示例
python scan_sim.py D:\1.pdf 260826-扫描件仿真.pdf--demo 自测:用内置示例验证输出指纹(PDF 版本、Producer、分辨率)。
| 参数 | 默认 | 说明 |
|---|---|---|
--dpi |
300 | 栅格化分辨率 |
--fuzz |
1 | 毛刺环宽(px),越小越贴线 |
--white-p |
0.00025 | 黑白交界对称翻转比例(文字缺墨+渗墨) |
--line-p |
0.005 | 表格线专属毛刺密度(黑突刺+短段白缺口) |
--hwhite-p / --vwhite-p |
0 | 横/竖线专属翻转比例(0=用 --white-p) |
--angle |
0 | 固定倾斜角(度),默认不旋转 |
--skew |
关闭 | 启用随机微倾斜(易致表格叠线,默认关) |
--skip-big |
关闭 | 跳过签名大块(默认关:毛刺均匀整页) |
--frame |
关闭 | 开启极淡贴边黑框(默认关,用户不要外框) |
--seed |
随机 | 随机种子,固定可复现 |
- 源 PDF 必须是「整页栅格化」的(Word 导出 PDF 通常如此);文本可选型 PDF 经栅格化后变为不可选,符合扫描件特征。
- 含彩色内容(如红章)当前按单色处理,章会变黑。
- 源文件不会被修改,脚本只生成新的目标文件。
- 整页栅格化到 300dpi 灰度
- 硬阈值二值化(不抖动,避免孤立噪点)
- 黑白交界对称随机翻转(文字缺墨 / 渗墨)
- 表格长横竖线外缘环撒离散黑突刺 + 线身短段白缺口
- 重建成整页 1-bit 图像,洗元数据,输出 PDF 1.3