Typora Markdown写作增强自动为文档中的图片标注人脸信息作为一个长期和Markdown打交道的文字工作者我经常在Typora里写技术博客、产品文档甚至是一些带插图的个人笔记。不知道你有没有过这样的困扰文档里插入了很多图片比如团队合照、产品演示截图或者用户反馈的界面图时间一长自己都记不清哪张图里有谁、有多少人。每次都要手动去翻看原图再回来写备注效率实在太低。最近我就被这个问题烦得不行。于是我琢磨着能不能让这个过程自动化在我用Typora写作的时候工具能自动帮我看看文档里的图片有没有人脸有的话就直接在图片下面标注出来比如“检测到3个人脸”。这样文档的信息一下子就丰富起来了回顾起来也一目了然。说干就干我决定动手开发一个小工具。核心思路很简单写一个脚本让它能读取Typora正在编辑的Markdown文档找出里面所有的本地图片路径然后调用一个现成的人脸检测模型比如cv_resnet101_face-detection去分析这些图片最后把检测结果自动插入到文档里对应的图片下方。今天我就把这个从想法到实现的完整过程分享给你。你会发现整个过程并不复杂但带来的效率提升却是实实在在的。1. 为什么需要这个工具解决写作中的信息断层在深入技术细节之前我们先聊聊这个工具到底能解决什么问题。表面上看它只是给图片加了个备注但背后解决的是写作流程中的一个“信息断层”。想象一下这些场景写项目周报你插入了本周的团队站立会照片。工具自动标注“检测到8个人脸”你立刻就知道全员到齐无需点开大图确认。整理用户访谈记录文档里附上了访谈现场的截图或照片。自动标注的人脸数量能快速帮你统计参与访谈的用户和同事人数。撰写产品使用教程教程中需要插入带有人物操作的界面截图。工具可以提示“检测到1个人脸”确保你的示例图片是符合预期的比如展示了用户正脸或侧脸。个人笔记管理在庞大的个人知识库中带有家人、朋友或名人照片的笔记可以通过人脸标注快速被检索或分类当然这需要进一步的开发。传统手动方式的痛点中断心流写作时你需要停下来找到图片文件打开人工查看再回到Typora输入文字。这个过程打断了专注的写作状态。容易遗漏图片一多很可能忘记给某张图添加备注。信息不一致手动输入可能写“图中三人”也可能写“共3人”格式不统一。无法批处理对于已有的、包含大量图片的历史文档手动更新备注是一项枯燥且耗时巨大的工程。而这个自动化工具正是为了保持写作心流、提升信息密度、确保标注一致性而生的。它把机械的、重复的查看和标注工作交给程序让你能更专注于内容创作本身。2. 工具设计与核心思路我的目标不是做一个功能繁杂的庞大系统而是一个轻量、专注、即开即用的效率工具。因此我选择了开发一个外部脚本而不是功能更复杂但依赖特定的Typora插件系统。为什么选择外部脚本兼容性好不依赖Typora特定版本或插件API这些可能变动。开发简单用Python就能快速实现生态丰富。使用灵活可以单独运行也可以配置成Typora的“自定义命令”来一键触发。功能聚焦只做好“读文档、识图片、检人脸、写备注”这一件事。整体工作流程如下graph TD A[启动脚本] -- B[读取指定的Markdown文档]; B -- C[使用正则表达式查找所有本地图片路径]; C -- D{遍历每一张图片}; D -- E[调用人脸检测模型分析图片]; E -- F[生成检测结果文本br如“检测到N个人脸”]; F -- G[将结果文本插入到文档中br图片所在行的下方]; G -- D; D -- 所有图片处理完毕 -- H[保存更新后的文档]; H -- I[完成在Typora中查看增强后的文档];这个流程就像是一个智能小助手帮你快速扫描并“阅读”了文档中的所有图片然后把它的“读后感”以备注的形式记录下来。3. 分步实现从零搭建你的写作增强脚本接下来我们一步步把这个想法变成代码。你需要一个基本的Python环境3.6以上然后我们通过pip安装必要的库。3.1 环境准备与依赖安装打开你的终端或命令行创建并进入一个项目文件夹然后安装我们需要的“武器库”# 创建项目目录 mkdir typora-face-annotator cd typora-face-annotator # 创建虚拟环境可选但推荐 python -m venv venv # Windows激活: venv\Scripts\activate # Mac/Linux激活: source venv/bin/activate # 安装核心依赖 # OpenCV用于图像加载和基础处理 # torch 和 torchvisionPyTorch框架我们的模型需要它 # Pillow另一个常用的图像处理库 pip install opencv-python torch torchvision Pillow安装完成后我们可以开始编写核心脚本了。3.2 核心脚本编写创建一个名为auto_face_annotation.py的文件将下面的代码复制进去。我会在代码中加上详细的注释帮你理解每一步在做什么。# auto_face_annotation.py import re import os import argparse from pathlib import Path import cv2 import torch from torchvision import transforms from PIL import Image import warnings warnings.filterwarnings(ignore) # 忽略一些不必要的警告 def load_face_detection_model(): 加载预训练的人脸检测模型。 这里我们使用TorchVision中基于ResNet101的人脸检测模型。 首次运行时会自动下载模型权重。 print(正在加载人脸检测模型...) model torch.hub.load(pytorch/vision:v0.10.0, fasterrcnn_resnet50_fpn, pretrainedTrue) # 注意TorchVision官方模型是通用目标检测包含‘person’类别。 # 对于更精准的人脸检测可以在此处替换为专门的face detection模型如RetinaFace。 # 但为了教程简洁和开箱即用我们先用这个模型它也能检测到人脸作为‘person’的一部分。 model.eval() # 设置为评估模式 print(模型加载完毕。) return model def detect_faces(image_path, model, confidence_threshold0.7): 检测单张图片中的人脸或人物数量。 参数: image_path: 图片文件路径 model: 加载好的检测模型 confidence_threshold: 置信度阈值高于此值才认为是有效检测 返回: 检测到的人脸/人物数量 if not os.path.exists(image_path): print(f警告图片文件不存在 {image_path}) return 0 # 使用OpenCV读取图片 img_cv cv2.imread(image_path) if img_cv is None: # 如果OpenCV读取失败尝试用PIL try: img_pil Image.open(image_path).convert(RGB) img_cv cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR) except Exception as e: print(f无法读取图片 {image_path}: {e}) return 0 # 将图片从BGR转换为RGB模型期望的格式 img_rgb cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB) img_pil Image.fromarray(img_rgb) # 定义图像预处理转换 transform transforms.Compose([ transforms.ToTensor(), ]) # 应用转换并添加批次维度 img_tensor transform(img_pil).unsqueeze(0) # 使用模型进行预测不计算梯度以提升速度 with torch.no_grad(): predictions model(img_tensor) # 提取预测结果 # predictions[0] 包含 boxes, labels, scores boxes predictions[0][boxes] labels predictions[0][labels] scores predictions[0][scores] # 统计置信度高于阈值且标签为‘person’COCO数据集中标签为1的检测框数量 person_class_id 1 # COCO数据集中‘person’类的ID face_count 0 for score, label in zip(scores, labels): if score confidence_threshold and label person_class_id: face_count 1 return face_count def process_markdown_file(file_path, model): 处理单个Markdown文件查找并标注图片。 参数: file_path: Markdown文件路径 model: 人脸检测模型 file_path Path(file_path) if not file_path.exists(): print(f错误文件 {file_path} 不存在。) return print(f正在处理文档: {file_path}) # 读取文档内容 with open(file_path, r, encodingutf-8) as f: lines f.readlines() # 用于匹配Markdown图片语法的正则表达式 # 匹配格式 # 这里我们主要捕获图片路径它可能在括号内 # 这个正则表达式能匹配相对路径和绝对路径 pattern r!\[.*?\]\((.*?)(?:\s.*?)?\) new_lines [] i 0 while i len(lines): line lines[i] new_lines.append(line) # 检查当前行是否包含图片标记 match re.search(pattern, line) if match: image_path_str match.group(1) # 处理图片路径如果是相对路径则相对于Markdown文件所在目录 if not os.path.isabs(image_path_str): # 图片路径可能是相对于文档位置的 potential_path file_path.parent / image_path_str # 尝试查找文件可能路径中包含‘./’或‘../’ if potential_path.exists(): abs_image_path str(potential_path.resolve()) else: # 如果拼接后不存在尝试直接使用原字符串可能文档另有基准目录 abs_image_path str((file_path.parent / image_path_str).resolve()) else: abs_image_path image_path_str # 检查文件是否存在忽略网络图片URL if os.path.exists(abs_image_path): print(f 分析图片: {image_path_str}) try: face_num detect_faces(abs_image_path, model) if face_num 0: # 在图片行下方插入标注 annotation f\n **图片信息**检测到 {face_num} 个人物。\n new_lines.append(annotation) print(f - 检测到 {face_num} 个人物已添加标注。) else: print(f - 未检测到清晰人物。) except Exception as e: print(f - 处理图片时出错: {e}) else: # 文件不存在可能是网络图片跳过 # print(f 跳过非本地文件或不存在: {image_path_str}) pass i 1 # 将处理后的内容写回文件 with open(file_path, w, encodingutf-8) as f: f.writelines(new_lines) print(f文档处理完成: {file_path}) def main(): parser argparse.ArgumentParser(description自动为Markdown文档中的本地图片添加人脸检测标注。) parser.add_argument(file, typestr, help要处理的Markdown文件路径) parser.add_argument(--confidence, typefloat, default0.7, help检测置信度阈值 (默认: 0.7)) args parser.parse_args() # 加载模型 model load_face_detection_model() # 处理文件 process_markdown_file(args.file, model) if __name__ __main__: main()3.3 如何使用这个脚本脚本写好了怎么用呢非常简单。第一步准备你的Markdown文档假设你有一个名为my_blog.md的文档里面已经插入了一些本地图片比如# 我的周末游记 上周团队去郊外团建气氛非常好  下午我们还玩了飞盘游戏。 第二步运行脚本在终端里导航到你的脚本所在目录然后运行python auto_face_annotation.py my_blog.md如果你觉得模型检测太敏感或太保守可以调整置信度阈值默认0.7python auto_face_annotation.py my_blog.md --confidence 0.8第三步查看结果处理完成后再次打开my_blog.md你会发现它已经变成了这样# 我的周末游记 上周团队去郊外团建气氛非常好  **图片信息**检测到 8 个人物。 下午我们还玩了飞盘游戏。  **图片信息**检测到 4 个人物。看信息是不是立刻丰富多了整个过程完全自动化你只需要运行一条命令。3.4 与Typora深度集成一键触发每次都要切到终端运行命令还是有点麻烦。我们可以把它集成到Typora的“自定义命令”里实现一键增强。在Typora中点击顶部菜单栏的文件-偏好设置(macOS是Typora-偏好设置)。切换到通用选项卡。找到高级设置部分点击打开高级设置。这会打开一个conf.user.json文件。在customCommands部分添加如下配置如果不存在就创建该部分{ customCommands: [ { id: auto-face-annotation, name: 自动标注图片人物, command: python, args: [/你的完整路径/typora-face-annotator/auto_face_annotation.py, ${currentFile}], os: mac // 或 win 或 linux根据你的系统修改 } ] }保存conf.user.json文件并重启Typora。重启后当你编辑任意Markdown文档时可以在顶部菜单栏的自定义命令中找到自动标注图片人物的选项。点击它当前文档的图片就会自动被分析并标注4. 实际效果与更多可能性我用自己的几篇旧博客测试了这个工具效果令人满意。对于清晰的合影、包含人物的截图模型都能准确地检测出人数并以统一的格式添加标注。这让我在回顾文档时无需点开图片就能快速获取关键信息。当然这个工具还有很大的扩展空间你可以根据自己的需求来改造它更专业的模型当前使用的是通用人物检测模型。你可以集成更精准的专用人脸检测模型如MTCNN、RetinaFace甚至人脸识别模型来标注“这是谁”。更多图像信息除了人脸还可以检测其他物体使用目标检测模型标注“包含一台笔记本电脑”、“有一辆汽车”等。批量处理历史文档写一个循环让它扫描整个笔记目录一次性处理所有陈旧的Markdown文件。自定义标注模板修改脚本中的annotation变量可以生成不同风格的备注比如用图标、不同的颜色如果Typora支持HTML等。错误处理与日志为脚本增加更完善的日志记录方便排查哪些图片处理失败及其原因。5. 总结开发这个小工具的过程本身就是一个很好的“用技术解决具体问题”的实践。它没有用到多么高深莫测的算法只是将成熟的模型人脸检测与一个具体的应用场景Markdown写作巧妙地结合了起来就产生了“112”的效用。技术最终要服务于人和工作流。这个工具的价值不在于它本身有多复杂而在于它切切实实地消除了一個微小的、但频繁发生的摩擦点。它让我的写作环境变得更“智能”了一点信息更“丰富”了一点。这种通过自动化将人力从重复劳动中解放出来的思路可以应用到很多地方。如果你也经常用Typora或类似的Markdown编辑器处理带图片的文档不妨试试这个脚本或者基于这个思路打造你自己的写作增强工具。从一个小痛点开始用代码给自己打造一个更顺手的创作环境这本身就是一件很有成就感的事。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
Typora Markdown写作增强:自动为文档中的图片标注人脸信息
Typora Markdown写作增强自动为文档中的图片标注人脸信息作为一个长期和Markdown打交道的文字工作者我经常在Typora里写技术博客、产品文档甚至是一些带插图的个人笔记。不知道你有没有过这样的困扰文档里插入了很多图片比如团队合照、产品演示截图或者用户反馈的界面图时间一长自己都记不清哪张图里有谁、有多少人。每次都要手动去翻看原图再回来写备注效率实在太低。最近我就被这个问题烦得不行。于是我琢磨着能不能让这个过程自动化在我用Typora写作的时候工具能自动帮我看看文档里的图片有没有人脸有的话就直接在图片下面标注出来比如“检测到3个人脸”。这样文档的信息一下子就丰富起来了回顾起来也一目了然。说干就干我决定动手开发一个小工具。核心思路很简单写一个脚本让它能读取Typora正在编辑的Markdown文档找出里面所有的本地图片路径然后调用一个现成的人脸检测模型比如cv_resnet101_face-detection去分析这些图片最后把检测结果自动插入到文档里对应的图片下方。今天我就把这个从想法到实现的完整过程分享给你。你会发现整个过程并不复杂但带来的效率提升却是实实在在的。1. 为什么需要这个工具解决写作中的信息断层在深入技术细节之前我们先聊聊这个工具到底能解决什么问题。表面上看它只是给图片加了个备注但背后解决的是写作流程中的一个“信息断层”。想象一下这些场景写项目周报你插入了本周的团队站立会照片。工具自动标注“检测到8个人脸”你立刻就知道全员到齐无需点开大图确认。整理用户访谈记录文档里附上了访谈现场的截图或照片。自动标注的人脸数量能快速帮你统计参与访谈的用户和同事人数。撰写产品使用教程教程中需要插入带有人物操作的界面截图。工具可以提示“检测到1个人脸”确保你的示例图片是符合预期的比如展示了用户正脸或侧脸。个人笔记管理在庞大的个人知识库中带有家人、朋友或名人照片的笔记可以通过人脸标注快速被检索或分类当然这需要进一步的开发。传统手动方式的痛点中断心流写作时你需要停下来找到图片文件打开人工查看再回到Typora输入文字。这个过程打断了专注的写作状态。容易遗漏图片一多很可能忘记给某张图添加备注。信息不一致手动输入可能写“图中三人”也可能写“共3人”格式不统一。无法批处理对于已有的、包含大量图片的历史文档手动更新备注是一项枯燥且耗时巨大的工程。而这个自动化工具正是为了保持写作心流、提升信息密度、确保标注一致性而生的。它把机械的、重复的查看和标注工作交给程序让你能更专注于内容创作本身。2. 工具设计与核心思路我的目标不是做一个功能繁杂的庞大系统而是一个轻量、专注、即开即用的效率工具。因此我选择了开发一个外部脚本而不是功能更复杂但依赖特定的Typora插件系统。为什么选择外部脚本兼容性好不依赖Typora特定版本或插件API这些可能变动。开发简单用Python就能快速实现生态丰富。使用灵活可以单独运行也可以配置成Typora的“自定义命令”来一键触发。功能聚焦只做好“读文档、识图片、检人脸、写备注”这一件事。整体工作流程如下graph TD A[启动脚本] -- B[读取指定的Markdown文档]; B -- C[使用正则表达式查找所有本地图片路径]; C -- D{遍历每一张图片}; D -- E[调用人脸检测模型分析图片]; E -- F[生成检测结果文本br如“检测到N个人脸”]; F -- G[将结果文本插入到文档中br图片所在行的下方]; G -- D; D -- 所有图片处理完毕 -- H[保存更新后的文档]; H -- I[完成在Typora中查看增强后的文档];这个流程就像是一个智能小助手帮你快速扫描并“阅读”了文档中的所有图片然后把它的“读后感”以备注的形式记录下来。3. 分步实现从零搭建你的写作增强脚本接下来我们一步步把这个想法变成代码。你需要一个基本的Python环境3.6以上然后我们通过pip安装必要的库。3.1 环境准备与依赖安装打开你的终端或命令行创建并进入一个项目文件夹然后安装我们需要的“武器库”# 创建项目目录 mkdir typora-face-annotator cd typora-face-annotator # 创建虚拟环境可选但推荐 python -m venv venv # Windows激活: venv\Scripts\activate # Mac/Linux激活: source venv/bin/activate # 安装核心依赖 # OpenCV用于图像加载和基础处理 # torch 和 torchvisionPyTorch框架我们的模型需要它 # Pillow另一个常用的图像处理库 pip install opencv-python torch torchvision Pillow安装完成后我们可以开始编写核心脚本了。3.2 核心脚本编写创建一个名为auto_face_annotation.py的文件将下面的代码复制进去。我会在代码中加上详细的注释帮你理解每一步在做什么。# auto_face_annotation.py import re import os import argparse from pathlib import Path import cv2 import torch from torchvision import transforms from PIL import Image import warnings warnings.filterwarnings(ignore) # 忽略一些不必要的警告 def load_face_detection_model(): 加载预训练的人脸检测模型。 这里我们使用TorchVision中基于ResNet101的人脸检测模型。 首次运行时会自动下载模型权重。 print(正在加载人脸检测模型...) model torch.hub.load(pytorch/vision:v0.10.0, fasterrcnn_resnet50_fpn, pretrainedTrue) # 注意TorchVision官方模型是通用目标检测包含‘person’类别。 # 对于更精准的人脸检测可以在此处替换为专门的face detection模型如RetinaFace。 # 但为了教程简洁和开箱即用我们先用这个模型它也能检测到人脸作为‘person’的一部分。 model.eval() # 设置为评估模式 print(模型加载完毕。) return model def detect_faces(image_path, model, confidence_threshold0.7): 检测单张图片中的人脸或人物数量。 参数: image_path: 图片文件路径 model: 加载好的检测模型 confidence_threshold: 置信度阈值高于此值才认为是有效检测 返回: 检测到的人脸/人物数量 if not os.path.exists(image_path): print(f警告图片文件不存在 {image_path}) return 0 # 使用OpenCV读取图片 img_cv cv2.imread(image_path) if img_cv is None: # 如果OpenCV读取失败尝试用PIL try: img_pil Image.open(image_path).convert(RGB) img_cv cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR) except Exception as e: print(f无法读取图片 {image_path}: {e}) return 0 # 将图片从BGR转换为RGB模型期望的格式 img_rgb cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB) img_pil Image.fromarray(img_rgb) # 定义图像预处理转换 transform transforms.Compose([ transforms.ToTensor(), ]) # 应用转换并添加批次维度 img_tensor transform(img_pil).unsqueeze(0) # 使用模型进行预测不计算梯度以提升速度 with torch.no_grad(): predictions model(img_tensor) # 提取预测结果 # predictions[0] 包含 boxes, labels, scores boxes predictions[0][boxes] labels predictions[0][labels] scores predictions[0][scores] # 统计置信度高于阈值且标签为‘person’COCO数据集中标签为1的检测框数量 person_class_id 1 # COCO数据集中‘person’类的ID face_count 0 for score, label in zip(scores, labels): if score confidence_threshold and label person_class_id: face_count 1 return face_count def process_markdown_file(file_path, model): 处理单个Markdown文件查找并标注图片。 参数: file_path: Markdown文件路径 model: 人脸检测模型 file_path Path(file_path) if not file_path.exists(): print(f错误文件 {file_path} 不存在。) return print(f正在处理文档: {file_path}) # 读取文档内容 with open(file_path, r, encodingutf-8) as f: lines f.readlines() # 用于匹配Markdown图片语法的正则表达式 # 匹配格式 # 这里我们主要捕获图片路径它可能在括号内 # 这个正则表达式能匹配相对路径和绝对路径 pattern r!\[.*?\]\((.*?)(?:\s.*?)?\) new_lines [] i 0 while i len(lines): line lines[i] new_lines.append(line) # 检查当前行是否包含图片标记 match re.search(pattern, line) if match: image_path_str match.group(1) # 处理图片路径如果是相对路径则相对于Markdown文件所在目录 if not os.path.isabs(image_path_str): # 图片路径可能是相对于文档位置的 potential_path file_path.parent / image_path_str # 尝试查找文件可能路径中包含‘./’或‘../’ if potential_path.exists(): abs_image_path str(potential_path.resolve()) else: # 如果拼接后不存在尝试直接使用原字符串可能文档另有基准目录 abs_image_path str((file_path.parent / image_path_str).resolve()) else: abs_image_path image_path_str # 检查文件是否存在忽略网络图片URL if os.path.exists(abs_image_path): print(f 分析图片: {image_path_str}) try: face_num detect_faces(abs_image_path, model) if face_num 0: # 在图片行下方插入标注 annotation f\n **图片信息**检测到 {face_num} 个人物。\n new_lines.append(annotation) print(f - 检测到 {face_num} 个人物已添加标注。) else: print(f - 未检测到清晰人物。) except Exception as e: print(f - 处理图片时出错: {e}) else: # 文件不存在可能是网络图片跳过 # print(f 跳过非本地文件或不存在: {image_path_str}) pass i 1 # 将处理后的内容写回文件 with open(file_path, w, encodingutf-8) as f: f.writelines(new_lines) print(f文档处理完成: {file_path}) def main(): parser argparse.ArgumentParser(description自动为Markdown文档中的本地图片添加人脸检测标注。) parser.add_argument(file, typestr, help要处理的Markdown文件路径) parser.add_argument(--confidence, typefloat, default0.7, help检测置信度阈值 (默认: 0.7)) args parser.parse_args() # 加载模型 model load_face_detection_model() # 处理文件 process_markdown_file(args.file, model) if __name__ __main__: main()3.3 如何使用这个脚本脚本写好了怎么用呢非常简单。第一步准备你的Markdown文档假设你有一个名为my_blog.md的文档里面已经插入了一些本地图片比如# 我的周末游记 上周团队去郊外团建气氛非常好  下午我们还玩了飞盘游戏。 第二步运行脚本在终端里导航到你的脚本所在目录然后运行python auto_face_annotation.py my_blog.md如果你觉得模型检测太敏感或太保守可以调整置信度阈值默认0.7python auto_face_annotation.py my_blog.md --confidence 0.8第三步查看结果处理完成后再次打开my_blog.md你会发现它已经变成了这样# 我的周末游记 上周团队去郊外团建气氛非常好  **图片信息**检测到 8 个人物。 下午我们还玩了飞盘游戏。  **图片信息**检测到 4 个人物。看信息是不是立刻丰富多了整个过程完全自动化你只需要运行一条命令。3.4 与Typora深度集成一键触发每次都要切到终端运行命令还是有点麻烦。我们可以把它集成到Typora的“自定义命令”里实现一键增强。在Typora中点击顶部菜单栏的文件-偏好设置(macOS是Typora-偏好设置)。切换到通用选项卡。找到高级设置部分点击打开高级设置。这会打开一个conf.user.json文件。在customCommands部分添加如下配置如果不存在就创建该部分{ customCommands: [ { id: auto-face-annotation, name: 自动标注图片人物, command: python, args: [/你的完整路径/typora-face-annotator/auto_face_annotation.py, ${currentFile}], os: mac // 或 win 或 linux根据你的系统修改 } ] }保存conf.user.json文件并重启Typora。重启后当你编辑任意Markdown文档时可以在顶部菜单栏的自定义命令中找到自动标注图片人物的选项。点击它当前文档的图片就会自动被分析并标注4. 实际效果与更多可能性我用自己的几篇旧博客测试了这个工具效果令人满意。对于清晰的合影、包含人物的截图模型都能准确地检测出人数并以统一的格式添加标注。这让我在回顾文档时无需点开图片就能快速获取关键信息。当然这个工具还有很大的扩展空间你可以根据自己的需求来改造它更专业的模型当前使用的是通用人物检测模型。你可以集成更精准的专用人脸检测模型如MTCNN、RetinaFace甚至人脸识别模型来标注“这是谁”。更多图像信息除了人脸还可以检测其他物体使用目标检测模型标注“包含一台笔记本电脑”、“有一辆汽车”等。批量处理历史文档写一个循环让它扫描整个笔记目录一次性处理所有陈旧的Markdown文件。自定义标注模板修改脚本中的annotation变量可以生成不同风格的备注比如用图标、不同的颜色如果Typora支持HTML等。错误处理与日志为脚本增加更完善的日志记录方便排查哪些图片处理失败及其原因。5. 总结开发这个小工具的过程本身就是一个很好的“用技术解决具体问题”的实践。它没有用到多么高深莫测的算法只是将成熟的模型人脸检测与一个具体的应用场景Markdown写作巧妙地结合了起来就产生了“112”的效用。技术最终要服务于人和工作流。这个工具的价值不在于它本身有多复杂而在于它切切实实地消除了一個微小的、但频繁发生的摩擦点。它让我的写作环境变得更“智能”了一点信息更“丰富”了一点。这种通过自动化将人力从重复劳动中解放出来的思路可以应用到很多地方。如果你也经常用Typora或类似的Markdown编辑器处理带图片的文档不妨试试这个脚本或者基于这个思路打造你自己的写作增强工具。从一个小痛点开始用代码给自己打造一个更顺手的创作环境这本身就是一件很有成就感的事。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。