{"componentChunkName":"component---src-templates-acg-portal-new-template-tsx","path":"/pmu0p93xo","result":{"data":{"markdownRemark":{"html":"<h2 id=\"简介\"><a href=\"#%E7%AE%80%E4%BB%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>视频文字面积占比算子：抽帧 → EasyOCR 的 CRAFT 检测器找文本框 → 计算文字面积占帧面积的比例 → 多帧聚合成一个视频级数值。只产出占比，过滤交给下游表达式。</p>\n<h3 id=\"功能描述\"><a href=\"#%E5%8A%9F%E8%83%BD%E6%8F%8F%E8%BF%B0\" 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<ul>\n<li>抽帧复用存量 <code>VideoFrameSampler</code>（<code>output_frames=True</code>、<code>output_base64=False</code>），抽帧参数（模式、时间窗、上限等）由本算子透传，默认 <code>by_count_uniform</code> + <code>count_k=3</code></li>\n<li>只加载 EasyOCR 的检测器（<code>recognizer=False</code>），不加载识别模型，因此不产出文字内容；<code>download_enabled=False</code>，权重必须离线预置</li>\n<li>单帧占比按文本框<strong>并集</strong>面积 / 帧面积计算：把所有框画进一张布尔掩码再数像素，取值恒在 [0, 1]，框重叠不会重复计数</li>\n<li>水平框直接用 <code>[x_min, x_max, y_min, y_max]</code>（会先裁到画面内并纠正大小颠倒）；自由四边形框用外接矩形近似</li>\n<li>多帧聚合：<code>reduce_mode</code> 取 avg / max / min，结果保留 6 位小数</li>\n<li>整列抽帧失败时该列全部按空帧处理；单帧 OCR 异常只记日志并跳过该帧，不影响同视频其它帧</li>\n<li>一个视频没有任何有效帧（或全部帧检测失败）时返回 None，不是 0</li>\n<li>支持三种输入形式：<code>video_url</code>（本地/BOS 路径）、<code>video_base64</code>、<code>video_binary</code>；后两种会先解码成字节再连同 <code>video_format</code> 交给抽帧算子</li>\n</ul>\n<h2 id=\"算子参数\"><a href=\"#%E7%AE%97%E5%AD%90%E5%8F%82%E6%95%B0\" 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<h3 id=\"输入\"><a href=\"#%E8%BE%93%E5%85%A5\" 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<table>\n<thead>\n<tr>\n<th>输入</th>\n<th>含义</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>videos</td>\n<td>视频输入数组，内容类型由 video_src_type 决定（路径 / Base64 字符串 / bytes）</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"输出\"><a href=\"#%E8%BE%93%E5%87%BA\" 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<table>\n<thead>\n<tr>\n<th>输出</th>\n<th>含义</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ocr_area_ratio</td>\n<td>float64，文字面积占比，取值 [0, 1]；无有效帧时为 None</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"参数\"><a href=\"#%E5%8F%82%E6%95%B0\" 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<table>\n<thead>\n<tr>\n<th>参数名称</th>\n<th>类型</th>\n<th>默认值</th>\n<th>描述</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>video_src_type</td>\n<td>str</td>\n<td>\"video_url\"</td>\n<td>输入形式：video_url / video_base64 / video_binary</td>\n</tr>\n<tr>\n<td>model_path</td>\n<td>str</td>\n<td>\"/opt/aihc/model\"</td>\n<td>权重根目录</td>\n</tr>\n<tr>\n<td>model_name</td>\n<td>str</td>\n<td>\"EasyOCR\"</td>\n<td>相对 model_path 的 EasyOCR 权重目录</td>\n</tr>\n<tr>\n<td>lang_list</td>\n<td>list[str] 或 None</td>\n<td>None</td>\n<td>检测语言列表，None 时取 [\"ch_sim\", \"en\"]</td>\n</tr>\n<tr>\n<td>sample_mode</td>\n<td>str</td>\n<td>\"by_count_uniform\"</td>\n<td>抽帧模式，透传 VideoFrameSampler：by_count_uniform / by_interval_time / by_interval_frames / by_fps / by_timestamps</td>\n</tr>\n<tr>\n<td>start_time_sec</td>\n<td>float</td>\n<td>0.0</td>\n<td>抽帧起始秒</td>\n</tr>\n<tr>\n<td>end_time_sec</td>\n<td>float 或 None</td>\n<td>None</td>\n<td>抽帧结束秒，None 表示到视频末尾</td>\n</tr>\n<tr>\n<td>count_k</td>\n<td>int 或 None</td>\n<td>3</td>\n<td>by_count_uniform 模式的抽帧数</td>\n</tr>\n<tr>\n<td>interval_sec</td>\n<td>float 或 None</td>\n<td>None</td>\n<td>by_interval_time 模式的间隔秒</td>\n</tr>\n<tr>\n<td>interval_frames</td>\n<td>int 或 None</td>\n<td>None</td>\n<td>by_interval_frames 模式的间隔帧</td>\n</tr>\n<tr>\n<td>target_fps</td>\n<td>float 或 None</td>\n<td>None</td>\n<td>by_fps 模式的目标帧率</td>\n</tr>\n<tr>\n<td>timestamps_sec</td>\n<td>list[float] 或 None</td>\n<td>None</td>\n<td>by_timestamps 模式的时间戳列表</td>\n</tr>\n<tr>\n<td>max_frames</td>\n<td>int 或 None</td>\n<td>None</td>\n<td>抽帧数上限</td>\n</tr>\n<tr>\n<td>reduce_mode</td>\n<td>str</td>\n<td>\"avg\"</td>\n<td>多帧聚合方式：avg / max / min</td>\n</tr>\n<tr>\n<td>video_format</td>\n<td>str</td>\n<td>\"mp4\"</td>\n<td>二进制 / Base64 输入的容器格式</td>\n</tr>\n<tr>\n<td>rank</td>\n<td>int</td>\n<td>0</td>\n<td>多卡场景 worker 序号，当前只记录不参与设备选择</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"注意事项\"><a href=\"#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9\" 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<ul>\n<li>面积口径是设计如此：按文本框并集面积统计，重叠框不重复计数；自由四边形按外接矩形近似，斜排文字的占比会偏大。</li>\n<li>抽帧策略：走 <code>VideoFrameSampler</code> 的 <code>by_count_uniform</code>，在 [start, end] 上按时间均匀取点（<code>count_k=1</code> 取起始位置），视频时长拿不到时退化为固定随机种子的蓄水池采样。</li>\n<li>送检的帧是 OpenCV 的 BGR 通道序。</li>\n<li>EasyOCR 权重目录缺失或 Reader 初始化失败时 <code>__init__</code> 直接抛错，不会退化成联网下载。</li>\n<li>是否用 GPU 由 <code>aihc_udf</code> 的 <code>num_gpus</code> 推导（基类按 <code>num_gpus > 0</code> 置 <code>use_gpu</code>），传给 EasyOCR 的 <code>gpu=</code> 参数；<code>rank</code> 不参与选卡。</li>\n</ul>\n<h2 id=\"调用示例\"><a href=\"#%E8%B0%83%E7%94%A8%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\n    <div class=\"code-block-wrapper\">\n        <div class=\"code-block\">\n            <div class=\"code-block-header\">\n                <span class=\"code-block-name\">Python</span>\n                <button class=\"code-copy-btn\" data-tooltip-text=\"\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"> <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.57894 3.45614C5.57894 3.38832 5.63392 3.33333 5.70175 3.33333H12.5439C12.6117 3.33333 12.6667 3.38832 12.6667 3.45614V10.2982C12.6667 10.3661 12.6117 10.4211 12.5439 10.4211H11.7544V5.70175C11.7544 4.89754 11.1025 4.24561 10.2982 4.24561H5.57894V3.45614ZM4.24561 4.24561V3.45614C4.24561 2.65194 4.89754 2 5.70175 2H12.5439C13.3481 2 14 2.65194 14 3.45614V10.2982C14 11.1025 13.3481 11.7544 12.5439 11.7544H11.7544V12.5439C11.7544 13.3481 11.1025 14 10.2982 14H3.45614C2.65194 14 2 13.3481 2 12.5439V5.70175C2 4.89754 2.65194 4.24561 3.45614 4.24561H4.24561ZM3.33333 5.70175C3.33333 5.63392 3.38832 5.57894 3.45614 5.57894H10.2982C10.3661 5.57894 10.4211 5.63392 10.4211 5.70175V12.5439C10.4211 12.6117 10.3661 12.6667 10.2982 12.6667H3.45614C3.38832 12.6667 3.33333 12.6117 3.33333 12.5439V5.70175Z\" fill=\"currentColor\"></path> </svg>\n                    复制\n                </button>\n            </div>\n            <div class=\"code-block-content\">\n                <pre class=\"language-python\"><code><span class=\"line-number\">1</span><span class=\"token keyword\">from</span> __future__ <span class=\"token keyword\">import</span> annotations\n<span class=\"line-number\">2</span>\n<span class=\"line-number\">3</span><span class=\"token keyword\">import</span> os\n<span class=\"line-number\">4</span>\n<span class=\"line-number\">5</span><span class=\"token keyword\">import</span> daft\n<span class=\"line-number\">6</span><span class=\"token keyword\">from</span> daft <span class=\"token keyword\">import</span> col\n<span class=\"line-number\">7</span>\n<span class=\"line-number\">8</span><span class=\"token keyword\">from</span> daft<span class=\"token punctuation\">.</span>aihc<span class=\"token punctuation\">.</span>common<span class=\"token punctuation\">.</span>udf <span class=\"token keyword\">import</span> aihc_udf\n<span class=\"line-number\">9</span><span class=\"token keyword\">from</span> daft<span class=\"token punctuation\">.</span>aihc<span class=\"token punctuation\">.</span>functions<span class=\"token punctuation\">.</span>video<span class=\"token punctuation\">.</span>video_ocr_area_ratio <span class=\"token keyword\">import</span> VideoOcrAreaRatio\n<span class=\"line-number\">10</span>\n<span class=\"line-number\">11</span>os<span class=\"token punctuation\">.</span>environ<span class=\"token punctuation\">.</span>setdefault<span class=\"token punctuation\">(</span><span class=\"token string\">\"BOS_ENDPOINT\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"http://bj.bcebos.com\"</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">12</span>os<span class=\"token punctuation\">.</span>environ<span class=\"token punctuation\">.</span>setdefault<span class=\"token punctuation\">(</span><span class=\"token string\">\"BOS_REGION\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"bj\"</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">13</span>\n<span class=\"line-number\">14</span><span class=\"token keyword\">if</span> __name__ <span class=\"token operator\">==</span> <span class=\"token string\">\"__main__\"</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">15</span>    <span class=\"token keyword\">if</span> os<span class=\"token punctuation\">.</span>getenv<span class=\"token punctuation\">(</span><span class=\"token string\">\"DAFT_RUNNER\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"native\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token string\">\"ray\"</span><span class=\"token punctuation\">:</span>\n<span class=\"line-number\">16</span>        <span class=\"token keyword\">import</span> ray\n<span class=\"line-number\">17</span>        ray<span class=\"token punctuation\">.</span>init<span class=\"token punctuation\">(</span>dashboard_host<span class=\"token operator\">=</span><span class=\"token string\">\"0.0.0.0\"</span><span class=\"token punctuation\">,</span> ignore_reinit_error<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">18</span>        daft<span class=\"token punctuation\">.</span>set_runner_ray<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">19</span>    daft<span class=\"token punctuation\">.</span>set_execution_config<span class=\"token punctuation\">(</span>actor_udf_ready_timeout<span class=\"token operator\">=</span><span class=\"token number\">6000</span><span class=\"token punctuation\">,</span> min_cpu_per_task<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">20</span>\n<span class=\"line-number\">21</span>ds <span class=\"token operator\">=</span> daft<span class=\"token punctuation\">.</span>from_pydict<span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span><span class=\"token string\">\"video\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"bos://your-bucket/sample.mp4\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">22</span>    ds <span class=\"token operator\">=</span> ds<span class=\"token punctuation\">.</span>with_column<span class=\"token punctuation\">(</span>\n<span class=\"line-number\">23</span>        <span class=\"token string\">\"ocr_area_ratio\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">24</span>        aihc_udf<span class=\"token punctuation\">(</span>\n<span class=\"line-number\">25</span>            VideoOcrAreaRatio<span class=\"token punctuation\">,</span>\n<span class=\"line-number\">26</span>            construct_args<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>\n<span class=\"line-number\">27</span>                <span class=\"token string\">\"video_src_type\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"video_url\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">28</span>                <span class=\"token string\">\"model_path\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/path/to/models\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">29</span>                <span class=\"token string\">\"model_name\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"EasyOCR\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">30</span>                <span class=\"token string\">\"count_k\"</span><span class=\"token punctuation\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">31</span>                <span class=\"token string\">\"reduce_mode\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"avg\"</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">32</span>            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">33</span>            num_cpus<span class=\"token operator\">=</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">34</span>            num_gpus<span class=\"token operator\">=</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">35</span>            concurrency<span class=\"token operator\">=</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">36</span>            batch_size<span class=\"token operator\">=</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">37</span>        <span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>col<span class=\"token punctuation\">(</span><span class=\"token string\">\"video\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n<span class=\"line-number\">38</span>    <span class=\"token punctuation\">)</span>\n<span class=\"line-number\">39</span>    <span class=\"token comment\"># 只保留文字面积占比低于 0.3 的视频</span>\n<span class=\"line-number\">40</span>    ds <span class=\"token operator\">=</span> ds<span class=\"token punctuation\">.</span>where<span class=\"token punctuation\">(</span>col<span class=\"token punctuation\">(</span><span class=\"token string\">\"ocr_area_ratio\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;</span> <span class=\"token number\">0.3</span><span class=\"token punctuation\">)</span>\n<span class=\"line-number\">41</span>    ds<span class=\"token punctuation\">.</span>show<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre>\n            </div>\n        </div>\n    </div>\n  ","fields":{"slug":"pmu0p93xo","title":"视频 OCR 文字面积占比","date":"2026-09-14","extractedHeadings":[]},"headings":[{"value":"简介","depth":2},{"value":"功能描述","depth":3},{"value":"算子参数","depth":2},{"value":"输入","depth":3},{"value":"输出","depth":3},{"value":"参数","depth":3},{"value":"注意事项","depth":2},{"value":"调用示例","depth":2}]}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"pmu0p93xo","prev":{"id":"Hmu0p82z5","name":"视频水印概率","path":"Hmu0p82z5","filePath":"操作指南/AI数据处理/算子列表/视频/视频水印概率.md","seo":null,"parentIds":["ilib2qygp","Ymo88m8hi","Imob3m6so","6mpawyry0"],"parents":[{"id":"ilib2qygp","documentId":"bfa43a8b-968a-41a1-8c9d-906507eeaed9","name":"操作指南","repoName":"AIHC","filePath":"操作指南","disabled":false,"path":"ilib2qygp","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null,"solutionTag":null,"solutionColor":null},{"id":"Ymo88m8hi","documentId":"c8cb5e38-f8c5-40f4-a424-b0c7895f0c0a","name":"AI数据处理","repoName":"AIHC","filePath":"操作指南/AI数据处理","disabled":false,"path":"Ymo88m8hi","lastMergeTime":"2026-04-21 14:23:10","isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null},{"id":"Imob3m6so","documentId":"fe548e34-6659-4ff5-86f6-eee2c43aec90","name":"算子列表","repoName":"AIHC","filePath":"操作指南/AI数据处理/算子列表","disabled":false,"path":"Imob3m6so","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null},{"id":"6mpawyry0","documentId":"3428d02c-e287-45b8-9d16-5a7b20881dd4","name":"视频","repoName":"AIHC","filePath":"操作指南/AI数据处理/算子列表/视频","disabled":false,"path":"6mpawyry0","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null}]},"next":{"id":"8mu0pa52a","name":"视频音频标签","path":"8mu0pa52a","filePath":"操作指南/AI数据处理/算子列表/视频/视频音频标签.md","seo":null,"parentIds":["ilib2qygp","Ymo88m8hi","Imob3m6so","6mpawyry0"],"parents":[{"id":"ilib2qygp","documentId":"bfa43a8b-968a-41a1-8c9d-906507eeaed9","name":"操作指南","repoName":"AIHC","filePath":"操作指南","disabled":false,"path":"ilib2qygp","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null,"solutionTag":null,"solutionColor":null},{"id":"Ymo88m8hi","documentId":"c8cb5e38-f8c5-40f4-a424-b0c7895f0c0a","name":"AI数据处理","repoName":"AIHC","filePath":"操作指南/AI数据处理","disabled":false,"path":"Ymo88m8hi","lastMergeTime":"2026-04-21 14:23:10","isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null},{"id":"Imob3m6so","documentId":"fe548e34-6659-4ff5-86f6-eee2c43aec90","name":"算子列表","repoName":"AIHC","filePath":"操作指南/AI数据处理/算子列表","disabled":false,"path":"Imob3m6so","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null},{"id":"6mpawyry0","documentId":"3428d02c-e287-45b8-9d16-5a7b20881dd4","name":"视频","repoName":"AIHC","filePath":"操作指南/AI数据处理/算子列表/视频","disabled":false,"path":"6mpawyry0","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null}]},"parents":[{"id":"ilib2qygp","documentId":"bfa43a8b-968a-41a1-8c9d-906507eeaed9","name":"操作指南","repoName":"AIHC","filePath":"操作指南","disabled":false,"path":"ilib2qygp","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":null,"solutionTag":null,"solutionColor":null},{"id":"Ymo88m8hi","documentId":"c8cb5e38-f8c5-40f4-a424-b0c7895f0c0a","name":"AI数据处理","repoName":"AIHC","filePath":"操作指南/AI数据处理","disabled":false,"path":"Ymo88m8hi","lastMergeTime":"2026-04-21 14:23:10","isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null},{"id":"Imob3m6so","documentId":"fe548e34-6659-4ff5-86f6-eee2c43aec90","name":"算子列表","repoName":"AIHC","filePath":"操作指南/AI数据处理/算子列表","disabled":false,"path":"Imob3m6so","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null},{"id":"6mpawyry0","documentId":"3428d02c-e287-45b8-9d16-5a7b20881dd4","name":"视频","repoName":"AIHC","filePath":"操作指南/AI数据处理/算子列表/视频","disabled":false,"path":"6mpawyry0","lastMergeTime":null,"isApiDoc":null,"httpMethod":null,"seo":null,"sourceOrgName":null,"sourceRepoName":null,"sourceDocumentId":"","solutionTag":null,"solutionColor":null}],"specificSeo":null}}}