微信聊天记录自动截屏
概述
本技能把一个或多个微信聊天记录素材(录屏视频、单张超长截屏、普通截图、图片目录)处理成可直接打印或归档的内容:自动切分为适合排版的小段、按聊天时间从早到晚排序、相邻段保留约 10% 重叠,以 A4 页面编排(每页张数可选 2/4/6/8/9,每张图片下方标注编号),四周留白、图片等比缩放不拉伸,输出带页码的 Word(.docx),并按需输出 PDF;也可选择仅保存切分后的截图图片、不生成文档。
何时使用
- 用户提供微信聊天记录的录屏视频(滚动录制的聊天画面),想整理成 Word/PDF。
- 用户提供长截屏(单张超长竖图)或多张聊天截图,想按时间顺序归档到一份文档。
- 用户要求“聊天记录排版 / 截图转 Word / 截图转 PDF / 一页四张 / 按时间排序聊天截图”等任务。
工作流
- 确认输入:识别素材类型(视频 / 长截屏 / 普通截图 / 目录)。
- 先询问输出形式:询问用户「是否需要用 Word 排版?」(默认仅保存切分后的截图图片,不出 Word/PDF)。若用户选择“是”,进入下一步;否则按「仅保存截图图片」模式执行(
--images-only)。 - 再询问每页张数(仅 Word 模式):询问每页希望安排几张图片,提供选项 2 张 / 4 张 / 6 张 / 8 张 / 9 张(默认 4 张,对应
--per-page)。 - 准备环境:确认依赖已安装(见下文),未安装则先安装。
- 运行脚本:按上述选择执行
scripts/chat2doc.py。 - 询问是否出 PDF(仅 Word 模式):Word 生成后询问是否需要 PDF;用户回答“是”时再生成(复用缓存,避免重复 OCR)。
- 交付:报告输出文件路径、切分/排序结果摘要、每页张数与所有提示信息。
环境准备
使用托管 Python 创建/复用虚拟环境并安装依赖:
PY="C:/Users/leon/.workbuddy/binaries/python/versions/3.13.12/python.exe"
VENV="C:/Users/leon/.workbuddy/binaries/python/envs/wechat-chat-to-doc"
"$PY" -m venv "$VENV"
"$VENV/Scripts/python.exe" -m pip install -r scripts/requirements.txt
依赖清单见 scripts/requirements.txt:Pillow、python-docx、numpy、opencv-python-headless、onnxruntime、rapidocr。
> 国内网络下默认 PyPI 源可能极慢,建议加镜像:-i https://pypi.tuna.tsinghua.edu.cn/simple,并加 --only-binary :all: 避免源码编译。rapidocr 模型已内置,安装后离线可用。
脚本调用
脚本:scripts/chat2doc.py
PY="C:/Users/leon/.workbuddy/binaries/python/envs/wechat-chat-to-doc/Scripts/python.exe"
# 处理长截屏/截图/目录,输出到指定目录(默认每页 4 张)
"$PY" scripts/chat2doc.py "聊天记录.png" -o ./output
# 处理录屏视频
"$PY" scripts/chat2doc.py "聊天录屏.mp4" -o ./output
# 每页 6 张
"$PY" scripts/chat2doc.py "聊天记录.png" -o ./output --per-page 6
# 仅保存切分后的截图图片(不出 Word/PDF)
"$PY" scripts/chat2doc.py "聊天记录.png" -o ./output --images-only
# 一步生成 Word + PDF
"$PY" scripts/chat2doc.py "聊天记录.png" -o ./output --pdf
# 已生成 Word 后,仅复用缓存重出 PDF(避免重复 OCR)
"$PY" scripts/chat2doc.py ./output --pdf-only
参数说明
| 参数 | 默认 | 说明 |
|---|---|---|
input |
必填 | 视频 / 图片 / 图片目录路径 |
-o, --output-dir |
. |
输出目录 |
--per-page |
4 | 每页图片张数:2 / 4 / 6 / 8 / 9 |
--images-only |
关 | 仅保存截图图片,不生成 Word/PDF |
--pdf |
关 | 与 Word 一起生成 PDF |
--pdf-only |
关 | 仅用缓存页面重出 PDF |
--dpi |
200 | 输出分辨率(A4 约 1654×2339 px) |
--fit |
contain | contain 等比缩放留白;cover 铺满裁切 |
--no-ocr |
关 | 跳过 OCR,按自然顺序 |
--video-step |
0.2 | 视频采样间隔(秒,越小噪声越大) |
--video-threshold |
1.5 | 位移死区/静止判定阈值(像素) |
每页张数对应的网格:2→1列2行、4→2列2行、6→2列3行、8→2列4行、9→3列3行。
输出文件
<输出目录>/<名称>.docx:Word 文档(A4、含“第 X 页 / 共 Y 页”页码;图片为独立对象,可单独编辑/删除/调整)<输出目录>/<名称>.pdf:PDF(可选)<输出目录>/images/img_001.png …:每张截图单独另存的图片文件,编号与 Word 内“图 N”一一对应(--images-only模式下这是唯一输出)<输出目录>/_pages/page_XXX.png:缓存页面(供--pdf-only复用)
排版约定
- 页面:A4(210×297mm),四周留白 15mm。
- 每页张数可选:2 / 4 / 6 / 8 / 9(默认 4),对应网格 1×2 / 2×2 / 2×3 / 2×4 / 3×3;相邻图片间距 10mm。
- 图片默认等比缩放、不裁切,不足处自动留白居中(
--fit contain)。 - 比例自适应、绝不拉伸变形:切分是裁剪(crop)、缩放是等比(contain),整条链路从不对图片做非等比拉伸。段高按每张图自身的宽度计算,因此不同手机屏幕比例(如 19.5:9、16:9 等)的截图都能各自正确适配,不会被拉变形。
- 清晰度与张数的关系:每页张数越少、每张图越大,但对同一源图而言,图越大所需分辨率越高。以常见的 1080px 宽源图为例:2 张时打印 DPI 约 145(偏糊),4/6/8 张约 300(清晰),9 张约 490(最清晰)。若用户选 2 张且追求清晰,需提示提供更高分辨率源图(宽 ≥2000px)。
- 长截屏切分时,按固定尺寸均匀切分:每段高度 = 图片宽 × 单元格宽高比(即每格大小),固定步长推进,保证每段尺寸一致(与视频抽帧"每滚一屏取一图"效果一致);不做"智能找空白切点",避免内容分布不均导致某段过长/过短;末尾残留不足半段时并入上一段。
- 长截屏切分时,相邻两段保留约 10% 重叠(下一段起始 = 上一段起始 + 段高 - 重叠量),防止切点恰好切断消息内容。
- 每张图片下方以小号灰字标注全局编号("图 N",按排序后顺序),便于引用与核对。
- PDF 的"图 N"编号:用五号(10.5pt)浅灰字,绘制在图片下方(不在图片内);图片适配时在底部预留编号空间,确保编号不压到图片内容。
- PDF 页码:用五号(10.5pt)字,绘制在底边距内垂直居中,完整显示不裁切。
Word 排版(独立图片)
- Word 正文用单张连续表格编排(列数=网格列数),每张截图单独占一个单元格、是独立的可编辑对象(不是整页合并大图),方便用户单独编辑、删除或调整某一张。
- 每格内:图片居中 + 下方一行文本编号“图 N”;图片编号为文字,可单独修改/删除。
- 靠 Word 自然分页(每页 = 网格行数):行高留足余量、禁止跨页拆行(cantSplit)、删除模板空段落,不使用人工分页符——从机制上杜绝“隔页出现空白页”。
- 每张截图另存为独立图片文件到
<输出目录>/images/(img_001.png起,与 Word 内“图 N”编号一致),供单独引用或编辑。 - PDF 按每页 N 张整页合成图输出(PDF 为固定版面,无需可编辑);PDF 编号与页码字号/位置见上「排版约定」。
排序规则(OCR 时间戳)
- 每段图片 OCR 识别聊天内的日期(如“2026年10月11日”)与时间(如“10:30”“下午2:30”),取最靠上的时间戳作为该段锚点。
- 单来源内部检测时间方向,若为递减(录屏向上滚动)则自动反向为从早到晚。
- 多来源之间按“绝对日期 → 时间”排序;无法识别日期/时间时按自然顺序排列并输出提示。
- 排序结果与所有提示须如实反馈给用户;涉及证据材料时,提醒用户人工核对顺序是否准确。
局限与风险提示
- OCR 识别时间戳存在识别误差;若截图中无日期分隔或时间戳模糊,可能回退自然顺序。输出前应提示用户核对。
- 视频抽帧基于「垂直位移累计约一屏 + 停留检测」;极快滚动或画面含大量动态元素(动画、光标闪烁)时仍可能多抽/漏抽,可通过
--video-step、--video-threshold调整。 - 长截屏按固定尺寸均匀切分,切点不一定恰好落在消息间隙,气泡较密时仍可能切到内容;如需精确,建议用户人工复核切分处。
- 每页张数越少图越大,清晰度越依赖源图分辨率(见「排版约定」),2 张时尤其需高清源图。
- 生成的 Word/PDF 中内容为图片,文字不可检索/复制(因源素材本身为截图)。