{"componentChunkName":"component---src-templates-aig-portal-template-tsx","path":"/qmsod2hdd","result":{"data":{"markdownRemark":{"html":"<h1 id=\"快速入门\"><a href=\"#%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8\" aria-label=\"快速入门 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>快速入门</h1>\n<p>支持的系统和硬件版本：</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>要求</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>DevEco Studio</td>\n<td>5.0.0 及以上</td>\n</tr>\n<tr>\n<td>HarmonyOS SDK</td>\n<td>API 12 及以上</td>\n</tr>\n<tr>\n<td>编译 SDK</td>\n<td>5.0.0(12)</td>\n</tr>\n<tr>\n<td>目标设备</td>\n<td>phone</td>\n</tr>\n<tr>\n<td>运行系统</td>\n<td>HarmonyOS 5.0 及以上</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"开发包说明\"><a href=\"#%E5%BC%80%E5%8F%91%E5%8C%85%E8%AF%B4%E6%98%8E\" aria-label=\"开发包说明 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>开发包说明</h2>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">aip-ocr-harmonyos-sdk.zip   // OCR SDK 包，包括文档、sample 工程、SDK 核心库\n|- sample/                      // sample 示例工程\n|- libs/                        // lib 库，包括 .har 包\n|  |- ocr-core.har              // 核心模块\n|  |- ocr-online.har            // 在线识别能力模块\n|- docs/                        // 说明文档</code></pre></div>\n<p>SDK 以 HAR 形式提供，可以通过 <code class=\"language-text\">oh-package.json5</code> 依赖引入，Sample 工程使用 DevEco Studio 打开。</p>\n<h2 id=\"为您自己的工程添加必要的依赖\"><a href=\"#%E4%B8%BA%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E5%B7%A5%E7%A8%8B%E6%B7%BB%E5%8A%A0%E5%BF%85%E8%A6%81%E7%9A%84%E4%BE%9D%E8%B5%96\" aria-label=\"为您自己的工程添加必要的依赖 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>为您自己的工程添加必要的依赖</h2>\n<p>在应用模块的 <code class=\"language-text\">oh-package.json5</code> 中添加：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"42680164699758264000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`{\n  &quot;dependencies&quot;: {\n    &quot;@baidu/ocr-core&quot;: &quot;file:./libs/ocr-core.har&quot;,\n    &quot;@baidu/ocr-online&quot;: &quot;file:./libs/ocr-online.har&quot;\n  }\n}`, `42680164699758264000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"json5\"><pre class=\"language-json5\"><code class=\"language-json5\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"dependencies\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"@baidu/ocr-core\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"file:./libs/ocr-core.har\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"@baidu/ocr-online\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"file:./libs/ocr-online.har\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p><code class=\"language-text\">@baidu/ocr-online</code> 通过副作用导入触发能力注册。使用识别接口前必须在任意入口执行一次 <code class=\"language-text\">import &#39;@baidu/ocr-online&#39;</code>，否则会得到 <code class=\"language-text\">UNSUPPORTED_OCR_TYPE</code> 错误。</p>\n<h2 id=\"为您自己的工程添加必要的权限\"><a href=\"#%E4%B8%BA%E6%82%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E5%B7%A5%E7%A8%8B%E6%B7%BB%E5%8A%A0%E5%BF%85%E8%A6%81%E7%9A%84%E6%9D%83%E9%99%90\" aria-label=\"为您自己的工程添加必要的权限 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>为您自己的工程添加必要的权限</h2>\n<p>在 <code class=\"language-text\">src/main/module.json5</code> 中添加：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"29691647109631836000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`&quot;requestPermissions&quot;: [\n  {\n    &quot;name&quot;: &quot;ohos.permission.INTERNET&quot;\n  },\n  {\n    &quot;name&quot;: &quot;ohos.permission.CAMERA&quot;,\n    &quot;reason&quot;: &quot;\\$string:permission_camera_reason&quot;,\n    &quot;usedScene&quot;: {\n      &quot;abilities&quot;: [&quot;YourAbility&quot;],\n      &quot;when&quot;: &quot;inuse&quot;\n    }\n  }\n]`, `29691647109631836000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"json5\"><pre class=\"language-json5\"><code class=\"language-json5\"><span class=\"token property\">\"requestPermissions\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ohos.permission.INTERNET\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ohos.permission.CAMERA\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"reason\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"$string:permission_camera_reason\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"usedScene\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"abilities\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"YourAbility\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"when\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"inuse\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">]</span></code></pre></div>\n<p>各个权限的用途说明见下表：</p>\n<table>\n<thead>\n<tr>\n<th>名称</th>\n<th>用途</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">ohos.permission.INTERNET</code></td>\n<td>应用联网，发送请求数据至服务器，获得识别结果</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">ohos.permission.CAMERA</code></td>\n<td>调用相机进行拍照（仅使用扫描模式时需要）</td>\n</tr>\n</tbody>\n</table>\n<p><code class=\"language-text\">ohos.permission.CAMERA</code> 声明必须包含 <code class=\"language-text\">reason</code> 字段，否则系统不会弹出权限弹窗。SDK 不会主动申请相机权限，业务方需在调用扫描接口前自行调用 <code class=\"language-text\">abilityAccessCtrl</code> 完成权限申请。</p>\n<h2 id=\"放置资源文件（仅使用身份证识别时需要）\"><a href=\"#%E6%94%BE%E7%BD%AE%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%EF%BC%88%E4%BB%85%E4%BD%BF%E7%94%A8%E8%BA%AB%E4%BB%BD%E8%AF%81%E8%AF%86%E5%88%AB%E6%97%B6%E9%9C%80%E8%A6%81%EF%BC%89\" aria-label=\"放置资源文件（仅使用身份证识别时需要） permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>放置资源文件（仅使用身份证识别时需要）</h2>\n<p>如果需要身份证自动采集质量检测，将以下文件放到 <code class=\"language-text\">src/main/resources/rawfile/</code> 下：</p>\n<ul>\n<li>License 文件（如 <code class=\"language-text\">ocr_license.ini</code>）</li>\n<li>身份证质量检测模型目录（如 <code class=\"language-text\">baiducard/</code>）</li>\n</ul>\n<p>不使用身份证识别的应用可跳过此步骤。License 用于身份证质量检测模型的离线鉴权，与在线 API 鉴权是两个独立体系。</p>\n<h2 id=\"sample-使用说明\"><a href=\"#sample-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E\" aria-label=\"sample 使用说明 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sample 使用说明</h2>\n<p>SDK 包中提供了一个可快速运行的 Sample 工程，位于 <code class=\"language-text\">sample/</code> 目录，已经集成了 SDK 核心库、在线能力模块和默认采集 UI。使用 DevEco Studio 5.0+ 打开工程根目录即可导入。</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>值</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>模块路径</td>\n<td><code class=\"language-text\">sample/entry/</code></td>\n</tr>\n<tr>\n<td>入口页面</td>\n<td><code class=\"language-text\">DemoPage.ets</code></td>\n</tr>\n<tr>\n<td>入口 Ability</td>\n<td><code class=\"language-text\">DemoAbility.ets</code></td>\n</tr>\n<tr>\n<td>最低 API 版本</td>\n<td>API 12</td>\n</tr>\n<tr>\n<td>目标设备</td>\n<td>phone、tablet</td>\n</tr>\n<tr>\n<td>IDE</td>\n<td>DevEco Studio 5.0+</td>\n</tr>\n<tr>\n<td>构建工具</td>\n<td>hvigor</td>\n</tr>\n<tr>\n<td>包管理器</td>\n<td>ohpm</td>\n</tr>\n<tr>\n<td>签名</td>\n<td>需配置自动签名（Project Structure -> Signing Configs）</td>\n</tr>\n<tr>\n<td>鉴权方式</td>\n<td>access_token（从 rawfile 的 <code class=\"language-text\">local.properties</code> 读取）</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"配置步骤\"><a href=\"#%E9%85%8D%E7%BD%AE%E6%AD%A5%E9%AA%A4\" aria-label=\"配置步骤 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>配置步骤</h3>\n<ol>\n<li>复制 <code class=\"language-text\">sample/entry/src/main/resources/rawfile/local.properties.example</code> 为 <code class=\"language-text\">local.properties</code>，填入真实 access_token：</li>\n</ol>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"95553229277308340000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`# 通过 API Key + Secret Key 换取的 token\naccess_token=YOUR_REAL_ACCESS_TOKEN`, `95553229277308340000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"properties\"><pre class=\"language-properties\"><code class=\"language-properties\"><span class=\"token comment\"># 通过 API Key + Secret Key 换取的 token</span>\n<span class=\"token attr-name\">access_token</span><span class=\"token punctuation\">=</span><span class=\"token attr-value\">YOUR_REAL_ACCESS_TOKEN</span></code></pre></div>\n<ol start=\"2\">\n<li>如需验证身份证自动采集，将 License 文件与模型目录放到 <code class=\"language-text\">sample/entry/src/main/resources/rawfile/</code> 下：</li>\n</ol>\n<table>\n<thead>\n<tr>\n<th>资源</th>\n<th>路径</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>License 文件</td>\n<td><code class=\"language-text\">sample/entry/src/main/resources/rawfile/license.txt</code></td>\n</tr>\n<tr>\n<td>模型目录</td>\n<td><code class=\"language-text\">sample/entry/src/main/resources/rawfile/baiducard_models/</code></td>\n</tr>\n</tbody>\n</table>\n<ol start=\"3\">\n<li>在 DevEco Studio 中配置自动签名：File -> Project Structure -> Signing Configs，勾选 Automatically generate signature，登录华为开发者账号完成签名。</li>\n<li>选择目标设备（真机或模拟器），选择 <code class=\"language-text\">entry</code> 模块作为运行目标，点击 Run 按钮。</li>\n</ol>\n<p>首次运行成功标志：页面显示\"初始化成功，支持 N 种类型\"。</p>\n<p>若运行提示身份验证错误，可能是您还未填写正确的 access_token，或者是还未在百度智能云控制台绑定 HarmonyOS 应用的 bundleName。如何绑定 bundleName 请参考 <strong>身份验证与安全</strong> 章节。</p>\n<h2 id=\"身份验证与安全\"><a href=\"#%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E4%B8%8E%E5%AE%89%E5%85%A8\" aria-label=\"身份验证与安全 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>身份验证与安全</h2>\n<p>百度 AI 开放平台使用 OAuth2.0 授权调用开放 API，调用 API 时必须在请求中携带鉴权凭据。<strong>凭据可用 access_token、AK/SK、IAM API Key 或自定义 Token 提供器方式获得</strong>。HarmonyOS SDK 已经为您做了封装，当初始化完毕后，所有识别请求会自动携带鉴权信息，无需业务方在每次调用时手动传入。</p>\n<p>OCR HarmonyOS SDK 提供了以下 4 种在线 API 鉴权方式，选其一即可。</p>\n<table>\n<thead>\n<tr>\n<th>方式</th>\n<th>参数键</th>\n<th>适用场景</th>\n<th>安全性</th>\n<th>优先级</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>IAM API Key</td>\n<td><code class=\"language-text\">IAM_API_KEY</code></td>\n<td>企业级权限管理</td>\n<td>高</td>\n<td>1（最高）</td>\n</tr>\n<tr>\n<td>access_token</td>\n<td><code class=\"language-text\">ACCESS_TOKEN</code></td>\n<td>快速验证、开发调试</td>\n<td>中</td>\n<td>2</td>\n</tr>\n<tr>\n<td>API Key + Secret Key</td>\n<td><code class=\"language-text\">API_KEY</code> + <code class=\"language-text\">SECRET_KEY</code></td>\n<td>服务端中转下发</td>\n<td>高</td>\n<td>3</td>\n</tr>\n<tr>\n<td>自定义 Token 提供器</td>\n<td><code class=\"language-text\">AUTH_TOKEN_PROVIDER</code></td>\n<td>企业自有鉴权中心，动态获取 token</td>\n<td>取决于实现</td>\n<td>4（最低）</td>\n</tr>\n</tbody>\n</table>\n<p>优先级含义：当同时传入多种鉴权参数时，SDK 按上表从高到低选取第一个有效值。示例：同时设置了 <code class=\"language-text\">IAM_API_KEY</code> 和 <code class=\"language-text\">ACCESS_TOKEN</code>，SDK 使用 <code class=\"language-text\">IAM_API_KEY</code> 鉴权。</p>\n<h3 id=\"身份证质量检测能力-license（仅身份证需要）\"><a href=\"#%E8%BA%AB%E4%BB%BD%E8%AF%81%E8%B4%A8%E9%87%8F%E6%A3%80%E6%B5%8B%E8%83%BD%E5%8A%9B-license%EF%BC%88%E4%BB%85%E8%BA%AB%E4%BB%BD%E8%AF%81%E9%9C%80%E8%A6%81%EF%BC%89\" aria-label=\"身份证质量检测能力 license（仅身份证需要） permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>身份证质量检测能力 License（仅身份证需要）</h3>\n<p>除了包含远程API调用能力外，鸿蒙SDK中还集成了身份证识别的本地质量控制能力，提供给开发者本地检测身份证的功能。如果使用身份证正面/反面识别（<code class=\"language-text\">ID_CARD_FRONT</code> / <code class=\"language-text\">ID_CARD_BACK</code>），且需要自动采集质量检测功能，则还需配置 License 文件。License 用于身份证质量检测模型的离线鉴权，与在线 API 鉴权是两个独立体系，不参与上表的优先级判定。</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>是否必须</td>\n<td>仅使用身份证识别且需要自动采集时必须。不使用身份证则完全不需要</td>\n</tr>\n<tr>\n<td>配置位置</td>\n<td>通过 <code class=\"language-text\">OcrOptions.initParams</code> 设置</td>\n</tr>\n<tr>\n<td>文件位置</td>\n<td>放置在 <code class=\"language-text\">src/main/resources/rawfile/</code> 下</td>\n</tr>\n<tr>\n<td>绑定方式</td>\n<td>绑定应用 bundleName 和签名指纹</td>\n</tr>\n<tr>\n<td>失败影响</td>\n<td>License 不可用时身份证退回手动拍照，不影响其他所有识别类型</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"方式-1：iam-api-key\"><a href=\"#%E6%96%B9%E5%BC%8F-1%EF%BC%9Aiam-api-key\" aria-label=\"方式 1：iam api key permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>方式 1：IAM API Key</h3>\n<p>使用百度智能云 IAM 体系的 API Key 进行鉴权，凭据以 <code class=\"language-text\">Authorization: Bearer</code> 头形式发送。</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"30707382690761120000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`const options = new OcrOptions();\noptions.putParam(OnlineAuthParams.IAM_API_KEY, 'your_iam_api_key');\n\nawait OnlineOcrClient.getInstance().initializeAsync(context, options);`, `30707382690761120000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">const</span> options <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrOptions</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\noptions<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>OnlineAuthParams<span class=\"token punctuation\">.</span><span class=\"token constant\">IAM_API_KEY</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'your_iam_api_key'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">await</span> OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">initializeAsync</span><span class=\"token punctuation\">(</span>context<span class=\"token punctuation\">,</span> options<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>特点：</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>权限粒度</td>\n<td>支持 IAM 策略精细控制</td>\n</tr>\n<tr>\n<td>端侧刷新</td>\n<td>有。SDK 内建缓存与后台刷新机制，长期驻留友好</td>\n</tr>\n<tr>\n<td>适用场景</td>\n<td>企业级多部门、多应用权限隔离</td>\n</tr>\n<tr>\n<td>安全建议</td>\n<td>通过 IAM 控制台管理密钥生命周期</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"方式-2：通过-access_token\"><a href=\"#%E6%96%B9%E5%BC%8F-2%EF%BC%9A%E9%80%9A%E8%BF%87-access_token\" aria-label=\"方式 2：通过 access_token permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>方式 2：通过 access_token</h3>\n<p>此方案使用由 AK/SK 换取的短期 token，通常在服务端获取后下发到端侧。</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"50097077699358800000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`import common from '@ohos.app.ability.common';\nimport {\n  OnlineOcrClient, OcrOptions, OcrInitResult,\n  OnlineAuthParams\n} from '@baidu/ocr-core';\nimport '@baidu/ocr-online';\n\nasync function initOcrSdk(context: common.Context, accessToken: string): Promise<void> {\n  const options = new OcrOptions();\n  options.putParam(OnlineAuthParams.ACCESS_TOKEN, accessToken);\n\n  const result: OcrInitResult = await OnlineOcrClient.getInstance()\n    .initializeAsync(context, options);\n\n  console.info(\\`OCR SDK 初始化完成，支持 \\${result.getSupportedTypes().length} 种能力\\`);\n}`, `50097077699358800000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">import</span> common <span class=\"token keyword\">from</span> <span class=\"token string\">'@ohos.app.ability.common'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span>\n  OnlineOcrClient<span class=\"token punctuation\">,</span> OcrOptions<span class=\"token punctuation\">,</span> OcrInitResult<span class=\"token punctuation\">,</span>\n  OnlineAuthParams\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@baidu/ocr-core'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token string\">'@baidu/ocr-online'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">async</span> <span class=\"token keyword\">function</span> <span class=\"token function\">initOcrSdk</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">context<span class=\"token punctuation\">:</span> common<span class=\"token punctuation\">.</span>Context<span class=\"token punctuation\">,</span> accessToken<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">Promise</span><span class=\"token operator\">&lt;</span><span class=\"token keyword\">void</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> options <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrOptions</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  options<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>OnlineAuthParams<span class=\"token punctuation\">.</span><span class=\"token constant\">ACCESS_TOKEN</span><span class=\"token punctuation\">,</span> accessToken<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">const</span> result<span class=\"token punctuation\">:</span> OcrInitResult <span class=\"token operator\">=</span> <span class=\"token keyword\">await</span> OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">.</span><span class=\"token function\">initializeAsync</span><span class=\"token punctuation\">(</span>context<span class=\"token punctuation\">,</span> options<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">info</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">OCR SDK 初始化完成，支持 </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>result<span class=\"token punctuation\">.</span><span class=\"token function\">getSupportedTypes</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>length<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> 种能力</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>特点：</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>有效期</td>\n<td>30 天（以百度云实际策略为准）</td>\n</tr>\n<tr>\n<td>获取方式</td>\n<td>服务端调用百度云鉴权接口，用 AK/SK 换取后下发</td>\n</tr>\n<tr>\n<td>端侧刷新</td>\n<td>无。SDK 不自动续期，过期后需重新 <code class=\"language-text\">initializeAsync</code></td>\n</tr>\n<tr>\n<td>安全建议</td>\n<td>由服务端获取后下发给端侧，不要在端侧直接存储 AK/SK</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"方式-2：通过-api-key--secret-key\"><a href=\"#%E6%96%B9%E5%BC%8F-2%EF%BC%9A%E9%80%9A%E8%BF%87-api-key--secret-key\" aria-label=\"方式 2：通过 api key  secret key permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>方式 2：通过 API Key / Secret Key</h3>\n<p>直接传入 AK/SK，SDK 内部完成 token 换取并自动刷新。</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"17626389808506993000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`const options = new OcrOptions();\noptions.putParam(OnlineAuthParams.API_KEY, 'your_api_key');\noptions.putParam(OnlineAuthParams.SECRET_KEY, 'your_secret_key');\n\nawait OnlineOcrClient.getInstance().initializeAsync(context, options);`, `17626389808506993000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">const</span> options <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrOptions</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\noptions<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>OnlineAuthParams<span class=\"token punctuation\">.</span><span class=\"token constant\">API_KEY</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'your_api_key'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\noptions<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>OnlineAuthParams<span class=\"token punctuation\">.</span><span class=\"token constant\">SECRET_KEY</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'your_secret_key'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">await</span> OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">initializeAsync</span><span class=\"token punctuation\">(</span>context<span class=\"token punctuation\">,</span> options<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>特点：</p>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>自动刷新</td>\n<td>SDK 内部管理 token 生命周期，临近过期自动续期</td>\n</tr>\n<tr>\n<td>安全建议</td>\n<td>密钥应存储在服务端，通过安全通道下发，不建议硬编码在端侧代码</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"方式-4：自定义-token-提供器\"><a href=\"#%E6%96%B9%E5%BC%8F-4%EF%BC%9A%E8%87%AA%E5%AE%9A%E4%B9%89-token-%E6%8F%90%E4%BE%9B%E5%99%A8\" aria-label=\"方式 4：自定义 token 提供器 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>方式 4：自定义 Token 提供器</h3>\n<p>当业务有特殊的 token 管理需求（如企业自有鉴权中心、动态切换鉴权通道），可通过自定义提供器接入。</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"46203218186534450000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`const options = new OcrOptions();\noptions.putParam(OnlineAuthParams.AUTH_TOKEN_PROVIDER, 'your_provider_identifier');\n\nawait OnlineOcrClient.getInstance().initializeAsync(context, options);`, `46203218186534450000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">const</span> options <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrOptions</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\noptions<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>OnlineAuthParams<span class=\"token punctuation\">.</span><span class=\"token constant\">AUTH_TOKEN_PROVIDER</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'your_provider_identifier'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">await</span> OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">initializeAsync</span><span class=\"token punctuation\">(</span>context<span class=\"token punctuation\">,</span> options<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h3 id=\"身份证质量检测-license-配置\"><a href=\"#%E8%BA%AB%E4%BB%BD%E8%AF%81%E8%B4%A8%E9%87%8F%E6%A3%80%E6%B5%8B-license-%E9%85%8D%E7%BD%AE\" aria-label=\"身份证质量检测 license 配置 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>身份证质量检测 License 配置</h3>\n<p>License 不属于在线 API 鉴权方式，而是身份证质量检测模型的独立离线授权。通过 <code class=\"language-text\">OcrOptions.initParams</code> 配置：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"12479165413681370000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`import {\n  OcrInitParams, OnlineAuthParams, OnlineOcrTypes\n} from '@baidu/ocr-core';\nimport { IdCardInitParams } from '@baidu/ocr-online';\n\nconst options = new OcrOptions();\n// 先设置在线 API 鉴权（4 种方式选一）\noptions.putParam(OnlineAuthParams.ACCESS_TOKEN, 'your_token');\n\n// 再设置身份证质量检测 License（仅使用身份证时需要）\nconst idCardInit = new OcrInitParams();\nidCardInit.putParam(IdCardInitParams.LICENSE_KEY, 'your_license_key');\nidCardInit.putParam(IdCardInitParams.LICENSE_NAME, context.resourceDir + '/ocr_license.ini');\nidCardInit.params.set(IdCardInitParams.LICENSE_IS_REMOTE, true);\nidCardInit.putParam(IdCardInitParams.RESOURCE_DIR_PATH, context.resourceDir + '/baiducard');\n\noptions.initParams.set(OnlineOcrTypes.ID_CARD_FRONT.value(), idCardInit);\noptions.initParams.set(OnlineOcrTypes.ID_CARD_BACK.value(), idCardInit);\n\nawait OnlineOcrClient.getInstance().initializeAsync(context, options);`, `12479165413681370000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span>\n  OcrInitParams<span class=\"token punctuation\">,</span> OnlineAuthParams<span class=\"token punctuation\">,</span> OnlineOcrTypes\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@baidu/ocr-core'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> IdCardInitParams <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@baidu/ocr-online'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> options <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrOptions</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 先设置在线 API 鉴权（4 种方式选一）</span>\noptions<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>OnlineAuthParams<span class=\"token punctuation\">.</span><span class=\"token constant\">ACCESS_TOKEN</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'your_token'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 再设置身份证质量检测 License（仅使用身份证时需要）</span>\n<span class=\"token keyword\">const</span> idCardInit <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrInitParams</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nidCardInit<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>IdCardInitParams<span class=\"token punctuation\">.</span><span class=\"token constant\">LICENSE_KEY</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'your_license_key'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nidCardInit<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>IdCardInitParams<span class=\"token punctuation\">.</span><span class=\"token constant\">LICENSE_NAME</span><span class=\"token punctuation\">,</span> context<span class=\"token punctuation\">.</span>resourceDir <span class=\"token operator\">+</span> <span class=\"token string\">'/ocr_license.ini'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nidCardInit<span class=\"token punctuation\">.</span>params<span class=\"token punctuation\">.</span><span class=\"token keyword\">set</span><span class=\"token punctuation\">(</span>IdCardInitParams<span class=\"token punctuation\">.</span><span class=\"token constant\">LICENSE_IS_REMOTE</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nidCardInit<span class=\"token punctuation\">.</span><span class=\"token function\">putParam</span><span class=\"token punctuation\">(</span>IdCardInitParams<span class=\"token punctuation\">.</span><span class=\"token constant\">RESOURCE_DIR_PATH</span><span class=\"token punctuation\">,</span> context<span class=\"token punctuation\">.</span>resourceDir <span class=\"token operator\">+</span> <span class=\"token string\">'/baiducard'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\noptions<span class=\"token punctuation\">.</span>initParams<span class=\"token punctuation\">.</span><span class=\"token keyword\">set</span><span class=\"token punctuation\">(</span>OnlineOcrTypes<span class=\"token punctuation\">.</span><span class=\"token constant\">ID_CARD_FRONT</span><span class=\"token punctuation\">.</span><span class=\"token function\">value</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> idCardInit<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\noptions<span class=\"token punctuation\">.</span>initParams<span class=\"token punctuation\">.</span><span class=\"token keyword\">set</span><span class=\"token punctuation\">(</span>OnlineOcrTypes<span class=\"token punctuation\">.</span><span class=\"token constant\">ID_CARD_BACK</span><span class=\"token punctuation\">.</span><span class=\"token function\">value</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> idCardInit<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">await</span> OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">initializeAsync</span><span class=\"token punctuation\">(</span>context<span class=\"token punctuation\">,</span> options<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>License 绑定应用 bundleName 和签名指纹，攻击者即使拦截了流量、盗取了授权文件，也难以盗用您的配额。不使用身份证识别的应用完全不需要配置以上 License 相关参数。</p>\n<h3 id=\"鉴权流程\"><a href=\"#%E9%89%B4%E6%9D%83%E6%B5%81%E7%A8%8B\" aria-label=\"鉴权流程 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>鉴权流程</h3>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">initializeAsync(context, options)\n  |\n  v\n按优先级选取在线 API 鉴权方式\n  |\n  +-&gt; IAM_API_KEY 存在？使用 IAM Bearer 鉴权\n  |\n  +-&gt; ACCESS_TOKEN 存在？直接使用该 token\n  |\n  +-&gt; API_KEY + SECRET_KEY 存在？SDK 内部换取 token\n  |\n  +-&gt; AUTH_TOKEN_PROVIDER 存在？调用自定义提供器\n  |\n  +-&gt; 均未配置？抛出 AUTH_ERROR\n  |\n  v\n注册识别能力（身份证 License 在此阶段校验）\n  |\n  +-&gt; initParams 中有身份证 License：初始化质量检测模型\n  |     +-&gt; 成功：身份证自动采集可用\n  |     +-&gt; 失败：身份证退回手动拍照（其他类型不受影响）\n  |\n  +-&gt; 无身份证 License：跳过（其他类型正常可用）</code></pre></div>\n<h2 id=\"最小识别示例\"><a href=\"#%E6%9C%80%E5%B0%8F%E8%AF%86%E5%88%AB%E7%A4%BA%E4%BE%8B\" aria-label=\"最小识别示例 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>最小识别示例</h2>\n<p>初始化完成后，即可发起一次身份证识别：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"90594286395582190000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`import {\n  OnlineOcrClient, OcrType, OcrError, OcrJSONCallback,\n  OcrCaptureOptions, CaptureMode\n} from '@baidu/ocr-core';\nimport { OnlineOcrTypes, IdCardParams } from '@baidu/ocr-online';\n\nfunction scanIdCard(abilityContext: common.UIAbilityContext): void {\n  const captureOptions = new OcrCaptureOptions();\n  captureOptions.setCaptureMode(CaptureMode.AUTO);\n\n  const params = new IdCardParams();\n\n  OnlineOcrClient.getInstance().scanForJSON(\n    abilityContext,\n    OnlineOcrTypes.ID_CARD_FRONT,\n    captureOptions,\n    params,\n    {\n      onSuccess(responseJSON: string): void {\n        // responseJSON 为服务端完整 JSON 响应\n        console.info('识别成功: ' + responseJSON);\n      },\n      onFailure(error: OcrError): void {\n        console.error(\\`识别失败: code=\\${error.code}, message=\\${error.message}\\`);\n      },\n      onCanceled(): void {\n        console.info('用户取消');\n      }\n    } as OcrJSONCallback\n  );\n}`, `90594286395582190000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span>\n  OnlineOcrClient<span class=\"token punctuation\">,</span> OcrType<span class=\"token punctuation\">,</span> OcrError<span class=\"token punctuation\">,</span> OcrJSONCallback<span class=\"token punctuation\">,</span>\n  OcrCaptureOptions<span class=\"token punctuation\">,</span> CaptureMode\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@baidu/ocr-core'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> OnlineOcrTypes<span class=\"token punctuation\">,</span> IdCardParams <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@baidu/ocr-online'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">scanIdCard</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">abilityContext<span class=\"token punctuation\">:</span> common<span class=\"token punctuation\">.</span>UIAbilityContext</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> captureOptions <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcrCaptureOptions</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  captureOptions<span class=\"token punctuation\">.</span><span class=\"token function\">setCaptureMode</span><span class=\"token punctuation\">(</span>CaptureMode<span class=\"token punctuation\">.</span><span class=\"token constant\">AUTO</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">const</span> params <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">IdCardParams</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">scanForJSON</span><span class=\"token punctuation\">(</span>\n    abilityContext<span class=\"token punctuation\">,</span>\n    OnlineOcrTypes<span class=\"token punctuation\">.</span><span class=\"token constant\">ID_CARD_FRONT</span><span class=\"token punctuation\">,</span>\n    captureOptions<span class=\"token punctuation\">,</span>\n    params<span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span>\n      <span class=\"token function\">onSuccess</span><span class=\"token punctuation\">(</span>responseJSON<span class=\"token punctuation\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// responseJSON 为服务端完整 JSON 响应</span>\n        <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">info</span><span class=\"token punctuation\">(</span><span class=\"token string\">'识别成功: '</span> <span class=\"token operator\">+</span> responseJSON<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token function\">onFailure</span><span class=\"token punctuation\">(</span>error<span class=\"token punctuation\">:</span> OcrError<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">error</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">识别失败: code=</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>error<span class=\"token punctuation\">.</span>code<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">, message=</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>error<span class=\"token punctuation\">.</span>message<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      <span class=\"token function\">onCanceled</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">void</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token builtin\">console</span><span class=\"token punctuation\">.</span><span class=\"token function\">info</span><span class=\"token punctuation\">(</span><span class=\"token string\">'用户取消'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">as</span> OcrJSONCallback\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>页面销毁或不再使用时释放资源：</p>\n<div\n              class=\"gatsby-code-button-container\"\n              data-toaster-id=\"26010986909287805000\"\n              data-toaster-class=\"gatsby-code-button-toaster\"\n              data-toaster-text-class=\"gatsby-code-button-toaster-text\"\n              data-toaster-text=\"复制成功!\"\n              data-toaster-duration=\"2500\"\n              onClick=\"copyToClipboard(`OnlineOcrClient.getInstance().release();`, `26010986909287805000`)\"\n            >\n              <div\n                class=\"gatsby-code-button\"\n                data-tooltip=\"复制\"\n              >\n                <svg t=\"1618230150650\" class=\"gatsby-code-button-icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4556\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\"><defs><style type=\"text/css\"></style></defs><path d=\"M950.857143 833.828571c0 29.257143-21.942857 51.2-51.2 51.2-29.257143 0-51.2-21.942857-51.2-51.2V95.085714h-585.142857C241.371429 95.085714 219.428571 73.142857 219.428571 43.885714s21.942857-43.885714 43.885715-43.885714h650.971428c21.942857 0 36.571429 14.628571 36.571429 36.571429v797.257142zM109.714286 1024c-21.942857 0-36.571429-14.628571-36.571429-36.571429V175.542857c0-21.942857 14.628571-36.571429 36.571429-36.571428h658.285714c21.942857 0 36.571429 14.628571 36.571429 36.571428v811.885714c0 21.942857-14.628571 36.571429-36.571429 36.571429h-658.285714zM197.485714 277.942857c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-29.257143 14.628571-29.257143 21.942857s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857s-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971428c-14.628571 0-29.257143 14.628571-29.257143 29.257143s7.314286 21.942857 21.942858 21.942857h490.057142c14.628571 0 21.942857-7.314286 21.942858-21.942857 0-14.628571-7.314286-21.942857-21.942858-21.942857H197.485714z m0 138.971429c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h490.057143c14.628571 0 21.942857-7.314286 21.942857-21.942857s-14.628571-21.942857-29.257143-21.942857H197.485714z m0 146.285714c-14.628571 0-21.942857 7.314286-21.942857 21.942857s7.314286 21.942857 21.942857 21.942857h292.571429c14.628571 0 21.942857-7.314286 21.942857-21.942857s-7.314286-21.942857-21.942857-21.942857h-292.571429z\" fill=\"#FFFFFF\" p-id=\"4557\"></path></svg>\n              </div>\n            </div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\">OnlineOcrClient<span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">release</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>完成上述步骤后即可运行工程，跑通一次完整的采集识别流程。</p>","fields":{"slug":"qmsod2hdd","title":"快速入门","date":"2026-08-14"},"headings":[{"value":"快速入门","depth":1},{"value":"开发包说明","depth":2},{"value":"为您自己的工程添加必要的依赖","depth":2},{"value":"为您自己的工程添加必要的权限","depth":2},{"value":"放置资源文件（仅使用身份证识别时需要）","depth":2},{"value":"Sample 使用说明","depth":2},{"value":"配置步骤","depth":3},{"value":"身份验证与安全","depth":2},{"value":"身份证质量检测能力 License（仅身份证需要）","depth":3},{"value":"方式 1：IAM API Key","depth":3},{"value":"方式 2：通过 access_token","depth":3},{"value":"方式 2：通过 API Key / Secret Key","depth":3},{"value":"方式 4：自定义 Token 提供器","depth":3},{"value":"身份证质量检测 License 配置","depth":3},{"value":"鉴权流程","depth":3},{"value":"最小识别示例","depth":2}]}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"qmsod2hdd","prev":{"id":"1msoem1kf","name":"版本更新记录","path":"1msoem1kf","filePath":"SDK文档/HarmonyOS SDK/版本更新记录.md","seo":null,"parentIds":["rkibixpuz","Kmsoc317y"],"parents":[{"id":"rkibixpuz","documentId":null,"name":"HTTP-SDK文档","repoName":"OCR","filePath":"SDK文档","disabled":false,"path":"rkibixpuz","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null,"solutionTag":null,"solutionColor":null},{"id":"Kmsoc317y","documentId":"7e7a374c-1e37-4ead-a2cc-cec3ed0cd9c8","name":"HarmonyOS SDK","repoName":"OCR","filePath":"SDK文档/HarmonyOS SDK","disabled":false,"path":"Kmsoc317y","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null}]},"next":{"id":"dmsod35fr","name":"接口调用说明","path":"dmsod35fr","filePath":"SDK文档/HarmonyOS SDK/接口调用说明.md","seo":null,"parentIds":["rkibixpuz","Kmsoc317y"],"parents":[{"id":"rkibixpuz","documentId":null,"name":"HTTP-SDK文档","repoName":"OCR","filePath":"SDK文档","disabled":false,"path":"rkibixpuz","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null,"solutionTag":null,"solutionColor":null},{"id":"Kmsoc317y","documentId":"7e7a374c-1e37-4ead-a2cc-cec3ed0cd9c8","name":"HarmonyOS SDK","repoName":"OCR","filePath":"SDK文档/HarmonyOS SDK","disabled":false,"path":"Kmsoc317y","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null}]},"parents":[{"id":"rkibixpuz","documentId":null,"name":"HTTP-SDK文档","repoName":"OCR","filePath":"SDK文档","disabled":false,"path":"rkibixpuz","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null,"solutionTag":null,"solutionColor":null},{"id":"Kmsoc317y","documentId":"7e7a374c-1e37-4ead-a2cc-cec3ed0cd9c8","name":"HarmonyOS SDK","repoName":"OCR","filePath":"SDK文档/HarmonyOS SDK","disabled":false,"path":"Kmsoc317y","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null}],"specificSeo":null}}}