news 2026/9/7 7:13:46

PowerToys DSC PowerOCR 模块:用声明式配置管理 Power OCR(文本提取器)的快捷键与识别语言

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PowerToys DSC PowerOCR 模块:用声明式配置管理 Power OCR(文本提取器)的快捷键与识别语言

PowerToys DSC PowerOCR 模块:用声明式配置管理 Power OCR(文本提取器)的快捷键与识别语言

【免费下载链接】PowerToysMicrosoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys

Microsoft PowerToys 支持 DSC v3(Desired State Configuration)来声明式地管理各 PowerToy 的配置,而PowerOCR模块文档(doc/dsc/modules/PowerOCR.md)正是其中针对 Power OCR(Text Extractor,文本提取器)的配置参考。Power OCR 利用光学字符识别(OCR)从屏幕任意区域提取文本并复制到剪贴板,适用于从图片、视频、PDF 或任意屏幕内容中捕获文字。本文围绕该文档的完整内容展开:介绍PowerOCRDSC 模块的两个可配置属性(激活快捷键与首选语言)、三种使用方式(PowerToys.DSC.exe直接执行、DSC 配置文件、WinGet 配置)的完整示例,并结合开源仓库中的设置资源源码,说明这些配置项在 PowerToys 内部的真实落点。

模块定位:settings 资源如何映射到 PowerOCR

PowerToys DSC 通过PowerToys.DSC.exe命令行工具提供唯一的settings资源,统一管理所有 PowerToy 模块的配置;每个模块可独立配置,实现细粒度控制(参见 DSC 总览)。在设置资源源码中,各模块名与具体设置类型通过一张映射表绑定,PowerOCR 对应PowerOcrSettings类型:

{ nameof(ModuleType.PowerOCR), CreateModuleFunctionData<PowerOcrSettings> },

参见 SettingsResource.cs。

从源码结构看,PowerOcrSettings(PowerOcrSettings.cs)的默认NameTextExtractorVersion1,并且它实现了IHotkeyConfig接口,暴露了名为Activation_Shortcut的热键访问器——这解释了为什么 DSC 文档中ActivationShortcut是一个结构化对象,以及为什么该模块的快捷键能参与 PowerToys 的统一热键冲突检测。模块配置文件实际序列化时以TextExtractor为键(见 SndPowerOcrSettings.cs),即settings.json中该模块的段名是TextExtractor而非PowerOCR,这一点在用get/export查看当前状态时值得留意。

可配置属性详解

PowerOCR模块支持两个可配置属性。

ActivationShortcut:激活文本提取的键盘快捷键

类型:object默认值:Win+Shift+T

该对象描述一个完整的组合键,包含以下子属性:

子属性类型说明
winboolean是否按下 Windows 键
ctrlboolean是否按下 Ctrl 键
altboolean是否按下 Alt 键
shiftboolean是否按下 Shift 键
codeinteger虚拟键码(Virtual Key Code)
keystring键名

示例中code = 84key = "T",两者是同一物理键的两种表达(84 是字母 T 的虚拟键码),配置时应保持一致。源码中该热键通过HotkeyAccessor注册到全局快捷键体系中(PowerOcrSettings.cs),当快捷键无法绑定时会回退到DefaultActivationShortcut(即默认的Win+Shift+T)。

PreferredLanguage:OCR 首选识别语言

类型:string默认值:系统语言

用于指定 OCR 识别时优先使用的语言(如en-USfr-FRes-ES)。对于混合语言内容,将语言设置为覆盖目标文本的语种可以显著改善识别效果。

使用方式与完整示例

方式一:PowerToys.DSC.exe 直接执行——配置激活快捷键

以下示例自定义 OCR 激活快捷键(完整继承自原文档示例 1):

$config = @{ settings = @{ properties = @{ ActivationShortcut = @{ win = $true ctrl = $false alt = $false shift = $true code = 84 key = "T" } } name = "PowerOCR" version = "1.0" } } | ConvertTo-Json -Depth 10 -Compress PowerToys.DSC.exe set --resource 'settings' --module PowerOCR ` --input $config

set操作的底层行为可以从 SettingsResource.cs 得到印证:它先GetState()读取当前状态,生成当前态与期望态的 diff,然后仅在TestState()判定存在差异时才调用SetState()落盘——也就是说set是幂等的,重复执行不会产生无谓的写操作。随后输出两行 JSON:应用后的状态与差异信息。

方式二:DSC 配置文件——设置首选识别语言

以下示例通过 DSC v3 配置文件设置 OCR 语言(原文档示例 2):

dsc config set --file powerocr-language.dsc.yaml
# powerocr-language.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Configure Power OCR language type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: en-US name: PowerOCR version: 1.0

注意资源类型是Microsoft.PowerToys/PowerOCRSettings,这与manifest命令生成的清单命名规则一致:GenerateManifest()"{module}Settings"作为资源类型名(SettingsResource.cs),因此 PowerOCR 的 DSC 资源类型即为Microsoft.PowerToys/PowerOCRSettings

方式三:WinGet 配置——安装 PowerToys 并同时配置 Power OCR

以下示例将安装与配置合并在一个 WinGet 配置文件中执行(原文档示例 3),适合批量部署新机器:

winget configure winget-powerocr.yaml
# winget-powerocr.yaml $schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json metadata: winget: processor: dscv3 resources: - name: Install PowerToys type: Microsoft.WinGet.DSC/WinGetPackage properties: id: Microsoft.PowerToys source: winget - name: Configure Power OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: en-US name: PowerOCR version: 1.0

两个资源按声明顺序执行:先由 WinGet 安装Microsoft.PowerToys,再由 PowerToys 的 DSC 资源应用 OCR 语言配置。

多语言场景:配置法语文本提取

原文档示例 4 演示了面向多语言内容的配置,将首选语言指向法语:

dsc config set --file powerocr-multilingual.dsc.yaml
# powerocr-multilingual.dsc.yaml $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json resources: - name: Multilingual OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: fr-FR name: PowerOCR version: 1.0

典型用例

文档数字化——针对英文文档批量提取文本:

resources: - name: Document OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: en-US name: PowerOCR version: 1.0

国际化内容——针对西班牙语等混合语言内容:

resources: - name: Multilingual OCR type: Microsoft.PowerToys/PowerOCRSettings properties: settings: properties: PreferredLanguage: es-ES name: PowerOCR version: 1.0

配套运维操作:get / test / schema / manifest

围绕 PowerOCR 模块,还可以使用 settings 资源的通用运维子命令(参考 Settings Resource):

# 查看 PowerOCR 当前配置(export 与 get 等价) PowerToys.DSC.exe get --resource 'settings' --module PowerOCR PowerToys.DSC.exe export --resource 'settings' --module PowerOCR # 验证当前配置是否与期望状态一致 $desired = '{"settings":{"properties":{"PreferredLanguage":"en-US"},"name":"PowerOCR","version":"1.0"}}' PowerToys.DSC.exe test --resource 'settings' --module PowerOCR --input $desired

test输出的 JSON 中包含_inDesiredState布尔属性,指示配置是否处于期望状态;源码中该值由TestState()计算得出(SettingsResource.cs)。可以据此编写漂移检测脚本:若为false,则再执行一次set完成修正。

# 获取 PowerOCR 设置的 JSON Schema,了解全部可配置属性及类型 PowerToys.DSC.exe schema --resource 'settings' --module PowerOCR # 生成 DSC 资源清单(用于注册/引用资源) PowerToys.DSC.exe manifest --resource 'settings' --module PowerOCR

需要说明的是,PowerOCR的 DSC 支持是源码映射表中显式登记的能力(SettingsResource.cs);同一映射表注释中列出了当前不受支持的模块(MouseWithoutBorders、PowerLauncher、NewPlus),PowerOCR 不在其列。

小结与延伸阅读

PowerOCRDSC 模块将文本提取器最容易产生机器间差异的两项设置——激活快捷键与识别语言——纳入了声明式管理:用 PowerShell 对象或 YAML 声明期望状态,通过PowerToys.DSC.exedscwinget configure三种入口之一应用,并用test子命令持续验证漂移。配合 settings 资源的schema/manifest能力,可以将其纳入团队级的"配置即代码"流程。

进一步阅读:

  • Settings Resource 参考:settings 资源的全部操作与多模块配置示例
  • PowerToys DSC 总览:三种使用方式、支持模块列表与通用操作
  • ZoomIt 模块:同一模块文档集下的另一个 DSC 配置参考
  • SettingsResource 源码:get/set/test/export/schema/manifest 的实现入口
  • PowerOcrSettings 源码:PowerOCR 设置模型、热键访问器与TextExtractor模块名

【免费下载链接】PowerToysMicrosoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 7:12:50

FunASR说话人分离完全指南:三步自动标记“谁说了什么“

FunASR说话人分离完全指南&#xff1a;三步自动标记"谁说了什么" 【免费下载链接】FunASR Open-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.…

作者头像 李华
网站建设 2026/9/7 7:12:39

Emblem工具实测:长文档自动生成PPT与溯源功能全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 7:10:33

猫抓插件教程:浏览器视频下载与网页资源嗅探完整指南

猫抓插件教程&#xff1a;浏览器视频下载与网页资源嗅探完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&#xff08;Cat-Catch&#…

作者头像 李华
网站建设 2026/9/7 7:10:05

免费离线语音转录:Buzz——本地语音识别完整指南

免费离线语音转录&#xff1a;Buzz——本地语音识别完整指南 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 访谈录音传上去&…

作者头像 李华
网站建设 2026/9/7 7:09:00

基于LSTM的调制识别:Pytorch实现与RML2016-10a实战

简介&#xff1a;面向通信信号处理和深度学习研究者&#xff0c;这是一份基于RML2016-10a数据集用LSTM实现调制识别的PyTorch工程&#xff0c;旨在解决无线通信信号调制类型的自动分类问题。资源包内共14个文件&#xff0c;以三个Python脚本为核心&#xff0c;分别承担数据读取…

作者头像 李华