doco P3-C2: 讯飞ASR适配层接入 + 修复 doco/programs 忽略规则

- C2: asr_adapter 并入讯飞上传/轮询/解析,复用 extract_audio 分离音频,
  新增 doco asr 命令读 C1 热词;真转写 ep001 出 310 句带时间戳
- 补提交 C1 代码(llm.py / term_extract.py)与累积词典
- .gitignore: 挡 doco/programs 下 png/wav/mp4 及中间帧目录、本地 settings

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
simonkoson
2026-06-17 10:19:08 +08:00
parent 487877fa08
commit 1372600d71
30 changed files with 9422 additions and 21 deletions
@@ -0,0 +1,743 @@
[0m8s] 导弹呼啸而过
[0m9s] 战机低空穿梭
[0m11s] 无人机如蜂群般袭来
[0m14s] 这些空中威胁
[0m15s] 正不断挑战防御体系的极限
[0m18s] 它们是如何被精确拦截的
[0m21s] 究竟是什么力量
[0m22s] 能在遥远距离精准打击
[0m24s] 在近在咫尺时
[0m26s] 完成致命一击呢
[0m28s] 本期《军事科技》
[0m30s] 将带您逐步解析
[0m31s] 现代防空网络的复杂机制
[0m34s] 亲眼见证
[0m35s] 科技与智慧打造的空中屏障
[0m38s] 揭秘现代防空体系
[0m40s] 御敌于空的终极密码
[1m15s] 各位观众你们好
[1m16s] 欢迎收看《军事科技》
[1m17s] 我是主持人蓝皓
[1m20s] 从第二次世界大战时期的
[1m21s] 战机轰炸
[1m22s] 到冷战时期的导弹威慑
[1m24s] 再到如今的无人机
[1m26s] 高超声速武器的崛起
[1m28s] 空中威胁的形态
[1m29s] 不断地迭代
[1m31s] 防御体系也在随之进化
[1m34s] 而如今的现代化防空系统
[1m36s] 早已不再是
[1m37s] 单一武器的简单对抗了
[1m39s] 而是构建了
[1m40s] 以远 中 近衔接
[1m42s] 高中 低覆盖为一体的
[1m44s] 立体化防御系统
[1m46s] 仿佛一块层层镶嵌的空中盾牌
[1m49s] 从千里之外的高空
[1m51s] 到咫尺之间的低空
[1m53s] 形成了无死角的防护
[1m56s] 在与新型空中威胁持续对抗当中
[1m59s] 上演着一场场激烈的
[2m1s] 攻与防的较量
[2m19s] 2026年2月28日
[2m21s] 美以两国协同向伊朗发起军事打击
[2m24s] 中东地区顿时战火纷飞
[2m27s] 硝烟弥漫
[2m29s] 随着冲突不断加剧
[2m30s] 各方频繁动用弹道导弹
[2m32s] 巡航导弹
[2m34s] 高超声速武器
[2m35s] 以及自杀式无人机等先进装备
[2m38s] 展开密集的高强度空袭
[2m41s] 波斯湾上空
[2m42s] 随即呈现出一场
[2m44s] 攻防交织的终极较量
[2m46s] 涉及突破与拦截
[2m48s] 毁灭与保卫
[2m50s] 这场关乎生死存亡
[2m51s] 与战局走向的空中攻防战
[2m54s] 彻底爆发
[3m4s] 在涉及远 中 近程
[3m7s] 和高 中 低空的
[3m8s] 全方位空战对抗中
[3m11s] 弹道导弹
[3m12s] 与反导系统之间的对决
[3m14s] 无疑是最具战略威慑力
[3m16s] 且最检验技术水平的顶峰交锋
[3m20s] 中段反导
[3m21s] 作为现代战略空军的最高层级
[3m24s] 更是左右战场局势的核心要素
[3m28s] 这项技术
[3m29s] 常被形容为
[3m30s] 太空中以子弹击落子弹
[3m34s] 它标志着
[3m35s] 当今世界军事科技的极致成就
[3m37s] 也是战略防空领域
[3m39s] 真正的制高点
[3m48s] 一枚中远程弹道导弹的飞行
[3m50s] 分为上升段
[3m52s] 中段
[3m53s] 末段
[3m54s] 三者在时空 速度上的巨大差异
[3m57s] 直接决定了
[3m58s] 拦截难度的天壤之别
[4m0s] 上升段仅持续3至5分钟
[4m3s] 时间窗口稍纵即逝
[4m6s] 且需在敌国领土拦截
[4m8s] 受部署限制难以实施
[4m10s] 拦截成功率极低
[4m12s] 未段导弹
[4m13s] 俯冲至几十公里至几公里高空
[4m16s] 速度达马赫数10至20
[4m19s] 仅留数秒至十几秒的反应时间
[4m22s] 同时面临机动变轨
[4m24s] 多弹头诱饵及低空探测盲区
[4m27s] 拦截风险高且成功率有限
[4m31s] 唯有中段
[4m32s] 导弹在100公里以上大气层外
[4m34s] 无动力滑行
[4m36s] 飞行时间长达10至20分钟
[4m39s] 轨迹由万有引力决定
[4m41s] 极度稳定
[4m42s] 并未释放弹头与诱饵
[4m44s] 反导系统有足够的时间预警
[4m47s] 测算轨迹并拦截
[4m49s] 采用动能撞击
[4m51s] 可彻底消除地面威胁
[4m53s] 是现代战略防空最理想
[4m55s] 效果最佳的黄金拦截期
[4m59s] 也是各国反导技术研发的
[5m1s] 核心方向
[5m9s] 虽然说
[5m10s] 中段反导拦截
[5m11s] 在整个反导作战的流程当中
[5m14s] 它是比较容易实现的
[5m16s] 或者说
[5m17s] 可以针对对方来袭的导弹
[5m20s] 进行精准的摧毁
[5m21s] 但是最大的问题
[5m22s] 就是你的预警系统
[5m24s] 需要看得远
[5m25s] 反导拦截弹
[5m26s] 需要飞得快
[5m27s] 打得高 打得远
[5m28s] 所以对于技术方面的要求
[5m29s] 是比较高的
[5m30s] 这就要求
[5m31s] 大型的相控阵预警雷达
[5m33s] 能够在极远的距离上
[5m35s] 针对外大气层飞行的
[5m38s] 这种小型高速移动的目标
[5m40s] 能够进行精准的锁定
[5m42s] 而且要对它进行持续的跟踪
[5m45s] 还要有相关的
[5m46s] 这样的一个计算系统
[5m47s] 针对它的飞行轨迹进行计算
[5m49s] 这样的话
[5m50s] 才能够有效地引导反导拦截弹
[5m53s] 在外大气层
[5m54s] 对它进行精准的这样的一个截杀
[5m57s] 而且反导拦截弹的性能
[5m58s] 要求非常高
[6m0s] 不仅要飞得高
[6m1s] 飞得远 飞得快
[6m2s] 而且
[6m3s] 甚至还要配备有动能的战斗部
[6m5s] 要针对处于飞行状态的
[6m7s] 弹道导弹
[6m8s] 进行精准的撞击
[6m10s] 确保它是被彻底摧毁
[6m15s] 3月5日
[6m17s] 伊朗伊斯兰革命卫队发布声明称
[6m20s] 在“真实承诺-4”行动的第17轮中
[6m23s] 伊朗动用高超声速导弹
[6m25s] 和攻击无人机
[6m27s] 成功突破美国“萨德”防御系统
[6m30s] 打击了以色列国防部大楼
[6m32s] 与本-古里安国际机场
[6m34s] 并摧毁了7套雷达系统
[6m36s] 及核心配套设备
[6m39s] 同期
[6m40s] 美国内部评估报告透露
[6m42s] 作为中东关键中段反导装备的
[6m45s] 以色列“箭式”系统
[6m46s] 在拦截伊朗中程弹道导弹时
[6m49s] 显现重大短板
[6m51s] 实际拦截率
[6m52s] 远未达到原有设计标准
[6m57s] 那么在以色列的国土范围内
[6m59s] 有“箭-2” “箭-3” 反导系统
[7m1s] 也有美国部署的“萨德”反导系统
[7m4s] 但是我们看
[7m5s] 仍然有数量相当多的伊朗弹道导弹
[7m8s] 成功突防
[7m9s] 针对以色列区域内的目标
[7m11s] 进行了毁伤
[7m13s] 为什么说“箭-2”“箭-3”
[7m14s] 以及“萨德”系统
[7m15s] 它联起手来
[7m16s] 也没有办法针对伊朗的弹道导弹
[7m19s] 进行这种百分之百的防范和拦截
[7m21s] 我认为
[7m22s] 首先是伊朗弹道导弹的技术
[7m25s] 有所提升
[7m26s] 部分伊朗的弹道导弹
[7m27s] 采用了这种高超音速的战斗部
[7m30s] 在飞行的末段
[7m31s] 会有突然的加速
[7m32s] 或者说有急剧的
[7m34s] 飞行轨迹的变化
[7m35s] 这样的话
[7m36s] “萨德”系统
[7m37s] 和“箭-2”“箭-3”反导系统
[7m38s] 很难对它进行精准的拦截
[7m40s] 此外
[7m41s] 伊朗的一些弹道导弹
[7m43s] 比如说像“霍拉姆沙赫尔-4”
[7m45s] 那么它是一种重型的
[7m46s] 这样的一个弹头的设计理念
[7m49s] 1.5吨到2吨的战斗部
[7m51s] 它可以采用这种集束弹头
[7m53s] 这样的一个模式
[7m55s] 飞到了目标区上空之后
[7m56s] 打出了一个满天星的效果
[7m58s] 数十枚子弹头飞向目标区域
[8m1s] 所有的防空反导系统
[8m3s] 都没有办法对它进行拦截
[8m5s] 那么还有另外一种情况
[8m7s] 美国的反导作战系统
[8m8s] 和以色列的“箭-2” “箭-3” 反导系统
[8m10s] 它没有办法进行联网作战
[8m12s] 是各打各的
[8m13s] 这样的话
[8m14s] 在相关的区域内
[8m15s] 没有办法进行目标信息的共享
[8m17s] 那么也无法形成合力
[8m21s] 2026年3月15日
[8m23s] 伊朗伊斯兰革命卫队
[8m25s] 在“真实承诺-4”军事行动中
[8m28s] 首次实战部署了泥石导弹
[8m31s] 与此同时
[8m32s] 美国从韩国
[8m34s] 紧急调遣了萨德反导系统
[8m36s] 以加强该地区的防御
[8m38s] 应对伊朗导弹带来的持续威胁
[8m44s] 若将远程反导
[8m45s] 视作千里点穴的区域防空手段
[8m48s] 中程防空
[8m50s] 便是中空守护网
[8m52s] 承担着衔接
[8m53s] 远近防御的关键使命
[8m56s] 它覆盖数十公里
[8m57s] 乃至一百多公里的中高空区域
[9m0s] 作为防空体系中的
[9m2s] 中坚力量
[9m4s] 承担起区域防空重任
[9m6s] 护卫城市
[9m7s] 军事要地等高价值目标
[9m9s] 成为整个防空网络中
[9m11s] 承上启下的核心组成部分
[9m22s] 中程防空
[9m24s] 作为现代防空作战系统的
[9m25s] 关键环节
[9m27s] 其防御半径
[9m28s] 一般在50到200公里之间
[9m31s] 拦截高度
[9m32s] 重点覆盖10至20公里的中高空域
[9m36s] 这片空域
[9m37s] 正是现代战争中
[9m39s] 空中威胁密集活动的核心地带
[9m42s] 敌方战机
[9m43s] 若要突破外层防御
[9m45s] 打击纵深关键目标
[9m47s] 必须穿越此区域
[9m49s] 巡航导弹
[9m50s] 虽常利用低空突防
[9m52s] 但多数情况下
[9m54s] 仍需在中高空调整姿态
[9m56s] 寻找防御薄弱点
[9m58s] 而中近程导弹在俯冲末段
[10m1s] 同样会经过这一高度区间
[10m4s] 其高速特性
[10m5s] 要求中程防空系统及早介入
[10m8s] 精确拦截
[10m9s] 可以说
[10m10s] 这片中高空域
[10m11s] 是空中威胁
[10m13s] 渗向核心目标的必经通道
[10m16s] 也是防空体系中
[10m17s] 承前启后的关键拦截区
[10m26s] 在现代化的防空作战行动当中
[10m29s] 中程防空的难度是非常大的
[10m31s] 因为很多对方的
[10m34s] 这种空中的来袭目标
[10m36s] 其实它都是在
[10m37s] 中程防空的任务范围内
[10m39s] 目标的属性是非常多的
[10m41s] 此外
[10m42s] 在复杂的电磁环境的
[10m44s] 这样的一个状态下
[10m45s] 中程的防空体系
[10m47s] 也可能会出现失灵的情况
[10m49s] 因为
[10m50s] 对方可能会出动电子战飞机
[10m52s] 针对你的防空作战体系
[10m53s] 进行压制
[10m54s] 此外
[10m55s] 有的时候面对各种各样的目标
[10m57s] 数量众多的目标
[10m59s] 中程防空系统
[11m0s] 它的这样的一个
[11m2s] 火力的密集程度
[11m3s] 可能会出现不足的情况
[11m5s] 比如说一部发射器上
[11m7s] 它只有数量有限的中程防空导弹
[11m9s] 打完了之后
[11m10s] 对方的目标连续地持续地袭来
[11m14s] 那中程防空体系
[11m15s] 可能也会面临弹药不足
[11m17s] 火力不足的情况
[11m21s] 在近期
[11m22s] 美以联合对伊朗的军事行动中
[11m25s] 中程导弹防御系统
[11m27s] 成为防空体系中的
[11m28s] 核心作战力量
[11m30s] 也是双方攻防较量
[11m32s] 最为激烈的领域
[11m34s] 为巩固中程防御屏障
[11m36s] 美国运用
[11m37s] “爱国者”防空反导系统
[11m39s] 结合天基预警卫星
[11m41s] 陆基远程雷达
[11m43s] 及集成化指挥控制中心
[11m45s] 打造了能够覆盖30公里
[11m48s] 至150公里空域的拦截体系
[11m50s] 着重防护其军事基地
[11m52s] 与国防工业区域
[11m55s] 面对伊朗高超音速武器
[11m58s] 配合无人机集群的
[11m59s] 非对称组合式打击
[12m2s] 此前被美军公开宣称
[12m3s] 拦截成功率
[12m5s] 可达80%到97%的“爱国者”系统
[12m9s] 实际拦截率
[12m10s] 已跌至5%以下
[12m13s] 系统还频频出现拦截假目标
[12m16s] 漏过真实弹头的失误
[12m21s] “爱国者”曾在海湾战争期间
[12m24s] 一战成名
[12m25s] 那当时
[12m26s] 美军“爱国者”系统
[12m27s] 它所拦截的导弹
[12m29s] 都是伊拉克萨达姆政权军队
[12m32s] 使用的比较老旧的
[12m34s] “飞毛腿”弹道导弹
[12m36s] 它的飞行轨迹是一个典型的抛物线
[12m38s] 不会有这种
[12m39s] 机动变轨的这样的一些动作
[12m41s] 所以
[12m42s] 只要是探测到了它的飞行轨迹
[12m45s] 多发射一些“爱国者”拦截弹
[12m48s] 是可以对它进行有效拦截的
[12m49s] 但是现代化的弹道导弹
[12m51s] 突防能力都很强
[12m53s] 飞行轨迹是变化的
[12m54s] 甚至可以说是有一些打水漂的
[12m56s] 这样的一个飞行轨迹
[12m57s] 速度又很快
[12m58s] 那么甚至可能会携带
[13m0s] 更多的诱饵弹和干扰弹
[13m1s] 所以“爱国者”系统
[13m2s] 可能根本就看不清
[13m4s] 可能也就追不上
[13m6s] “爱国者”导弹在部分实战场景中
[13m9s] 拦截效果未达预期
[13m12s] 这一表现
[13m13s] 使得美以联合构建的
[13m14s] 中程防空反导系统暴露出短板
[13m18s] 也让多国对该系统
[13m19s] 产生信任危机
[13m24s] 在现代防空系统中
[13m25s] 低空与超低空
[13m27s] 是远程及中程防空
[13m29s] 存在的短板
[13m30s] 受到地球曲率
[13m32s] 地形掩蔽等影响
[13m33s] 远程雷达难以追踪低空目标
[13m37s] 而中程防空导弹
[13m38s] 在低空条件下
[13m39s] 制导系统易受地面杂波的干扰
[13m41s] 致使拦截效能下降
[13m44s] 因此
[13m45s] 近程防空系统由此诞生
[13m48s] 专门用于近距离的防护
[13m50s] 弥补了防空网络
[13m52s] 在低空领域的不足
[14m1s] 对普通公众而言
[14m3s] 近程防空无疑是最常见
[14m6s] 且视觉冲击力最强的防空形式
[14m9s] 那些在网络短片
[14m11s] 新闻报道和战场记录中
[14m13s] 常见的导弹腾空而起
[14m15s] 尾焰撕裂黑夜
[14m17s] 目标在空中爆炸
[14m19s] 火光刹那映亮天空的拦截画面
[14m22s] 大多源自近程防空系统
[14m25s] 这些系统射程较短
[14m27s] 但部署便捷响应迅速
[14m30s] 通常在目标接近阵地
[14m32s] 城市或重要设施的最后一刻
[14m35s] 才发动攻击
[14m36s] 因而更易被现场捕捉
[14m38s] 媒体记录
[14m39s] 并广泛传播
[14m41s] 正是由于这种高频曝光
[14m43s] 近程防空在许多人心中
[14m45s] 几乎成了防空的代名词
[14m48s] 然而实际上
[14m49s] 近程防空在整体防空网络中
[14m52s] 充当的是最终贴身防线的功能
[14m56s] 远程和中程防空
[14m58s] 无法覆盖的低空
[15m0s] 及超低空漏洞
[15m4s] 近程防空作战体系
[15m6s] 在实际应用的过程当中
[15m7s] 有的时候
[15m9s] 可能会成为战场上的奇兵
[15m10s] 因为对方的直升机
[15m13s] 甚至包括战斗机
[15m14s] 在低空飞行的时候
[15m15s] 它可能会放松警惕
[15m16s] 另外一个来不及反应
[15m18s] 所以这个时候
[15m19s] 近程防空火力
[15m20s] 针对目标进行射击的时候
[15m21s] 战斗机很难对它进行规避
[15m23s] 有的时候甚至连
[15m25s] 发射红外诱饵弹的时间都没有
[15m28s] 近程防空也有很大的难度
[15m30s] 因为很多近程防空作战体系
[15m33s] 它的搜索系统是比较简单的
[15m35s] 视野不够宽广
[15m36s] 也无法针对远距离的目标
[15m38s] 进行识别
[15m39s] 所以
[15m40s] 有的远程防空作战体系
[15m41s] 它本质上来讲是“近视眼”
[15m43s] 而且还涉及到一些
[15m44s] 地形起伏的问题
[15m46s] 如果对方利用这种地形起伏
[15m49s] 那么去进行超低空的突防
[15m51s] 在相关区域内部署的一些传感器
[15m53s] 比如说低空搜索雷达
[15m54s] 或者是光学红外传感器
[15m56s] 可能没有办法
[15m57s] 及时有效地识别目标
[15m58s] 那么这些低空突防的
[16m0s] 这样的一些空中作战平台
[16m2s] 也可能会针对
[16m3s] 近程的防空作战体系
[16m4s] 包括相关的防空阵地
[16m6s] 进行打击和压制
[16m11s] 在近期
[16m12s] 美以联合对伊朗的军事行动中
[16m15s] 以色列拉斐尔公司研发的
[16m17s] “铁穹”近程防空系统
[16m19s] 经历了自2011年部署以来
[16m21s] 最激烈
[16m22s] 且最具转折性的实战检验
[16m25s] 这款以往在冲突中
[16m27s] 以85%至90%拦截率
[16m30s] 享誉世界的明星武器
[16m32s] 在伊朗
[16m33s] “真实承诺-4”行动的饱和攻击下
[16m36s] 其卓越声誉荡然无存
[16m39s] 以色列国防部
[16m41s] 3月17日
[16m42s] 向国会递交的评估报告中指出
[16m45s] 面对伊朗连续发动的
[16m47s] 六十多波攻势
[16m48s] “铁穹”系统的实际拦截率
[16m50s] 从历史标榜的90%以上
[16m53s] 骤降至约50%
[16m55s] 而在集束弹头密集倾泻
[16m58s] 与无人机蜂群
[16m59s] 低空突袭的关键战斗阶段
[17m1s] 其拦截成功率
[17m3s] 更是下滑至30%以下
[17m5s] 刷新了服役以来的
[17m7s] 最低性能纪录
[17m12s] 我们注意到
[17m13s] 在此次军事行动的过程当中
[17m15s] “铁穹”系统表现平平
[17m16s] 我认为
[17m17s] 可能是有两方面的考虑
[17m19s] 就是它配套的这种传感器
[17m22s] 或者是预警体系
[17m23s] 可能是遭到了对方的火力打击
[17m25s] 有部分“铁穹”系统
[17m26s] 那么针对空中来袭目标
[17m28s] 它的反应速度不够快
[17m30s] 它的这样的一个情报
[17m33s] 和目标引导体系
[17m35s] 不够完善
[17m36s] 另外一个
[17m37s] 就是“铁穹”系统
[17m38s] 它所使用的是“塔米尔”拦截弹
[17m40s] 这种拦截弹
[17m41s] 由于它装备
[17m43s] 和使用的数量比较多
[17m44s] 所以
[17m45s] 它必须要进行成本的控制
[17m46s] 它的飞行速度
[17m49s] 其实并没有那么快
[17m50s] 有的时候
[17m51s] 针对高速目标进行打击的时候
[17m53s] 可能会出现速度跟不上的情况
[17m56s] 现在伊朗主要是使用弹道导弹
[17m59s] 针对以色列进行打击
[18m0s] 面对高空高速飞行的弹道导弹
[18m3s] 或者是
[18m4s] 配备有
[18m5s] 高超音速战斗部的弹道导弹
[18m7s] “铁穹”系统可能它的拦截范围
[18m9s] 拦截的高度也都不足
[18m11s] 伊朗也使用了大量的无人机
[18m14s] 但是这一次
[18m15s] 针对以色列进行后续的反击
[18m17s] 伊朗更加注重使用
[18m19s] 这种中程的弹道导弹
[18m21s] 或者是突防能力很强的弹道导弹
[18m23s] 面对这样的一种情况
[18m25s] 它就会出现反应速度不够快
[18m28s] 包括拦截的范围
[18m30s] 拦截的高度
[18m31s] 都存在不足的情况
[18m35s] 近程防空系统
[18m37s] 作为整个防空架构中
[18m38s] 关键的最后屏障
[18m40s] 肩负着坚守底线
[18m42s] 护卫要害的核心职责
[18m45s] 但它并非完美无缺
[18m47s] 仍存在明显的短板
[18m50s] 其防御范围
[18m51s] 通常较为有限
[18m53s] 探测与拦截能力
[18m54s] 都集中在较小区域
[18m57s] 大多只能执行小尺度
[18m58s] 重点目标的局部防护任务
[19m1s] 无法如同中远程防空系统那样
[19m4s] 实现广大空域的大范围
[19m6s] 远距离监控与狙击
[19m9s] 因此
[19m10s] 近程防空系统
[19m11s] 不能独自支撑一国 一城
[19m13s] 或整个战区的全面防空安全
[19m16s] 它更像是一件
[19m17s] 贴身的防弹衣
[19m19s] 而非是能覆盖全域的保护罩
[19m24s] 远程 中程与近程防空系统
[19m28s] 相互配合
[19m29s] 在现代战争中
[19m31s] 构筑了层次分明 分工明确
[19m33s] 紧密衔接的全空域
[19m35s] 立体防空网络
[19m38s] 三者各尽其责
[19m39s] 彼此支援 逐层拦截
[19m42s] 形成了一套由外至内
[19m44s] 由高空到低空
[19m45s] 由远及近的周密防御体系
[19m49s] 不过
[19m50s] 近年多场高强度
[19m51s] 军事冲突的实际表现
[19m53s] 这套看似牢不可破的防空体系
[19m56s] 正持续受到
[19m57s] 新兴战场模式的严峻挑战
[20m0s] 其传统作战思路和防御能力
[20m2s] 正在不断遭受冲击与重塑
[20m15s] 在美以联合对伊朗发动的
[20m17s] 大规模军事行动中
[20m19s] 可以清晰看到
[20m20s] 美军
[20m21s] 以色列军队
[20m22s] 以及伊朗的防空系统
[20m24s] 都遭遇了前所未有的考验
[20m26s] 在以往严密的多层防护网络
[20m29s] 在实战中屡次被突破
[20m31s] 撕裂
[20m32s] 甚至彻底崩溃
[20m34s] 美军采用了
[20m36s] 以“爱国者”和“萨德”反导系统
[20m38s] 中远程导弹防御体系
[20m41s] 以色列则调动了由“铁穹”
[20m43s] “大卫投石索”
[20m45s] 和“箭式”系统组成的
[20m46s] 全域防空反导系统
[20m49s] 然而
[20m50s] 针对高超声速武器穿透
[20m52s] 无人机群饱和攻击
[20m54s] 复合诱饵欺骗
[20m55s] 与强电磁干扰等策略
[20m57s] 拦截失败的情况
[20m59s] 依然频繁发生
[21m4s] 在此次行动的过程当中
[21m6s] 美以的防空反导系统
[21m7s] 频频被洞穿
[21m9s] 也就是说
[21m10s] 伊朗使用了
[21m11s] 一系列的突防手段
[21m13s] 最终打穿了
[21m14s] 美国和以色列的一些
[21m15s] 防空反导的保护伞
[21m18s] 那么针对相关的区域
[21m19s] 构成了更为猛烈的火力打击
[21m22s] 我认为
[21m23s] 就是存在一些问题
[21m25s] 比如说
[21m26s] 它系统之间
[21m27s] 没有进行有效的联合
[21m28s] 存在一些兼容的问题
[21m30s] 各自为战的状态下
[21m32s] 肯定会出现漏洞
[21m33s] 另外一个
[21m34s] 伊朗也是采取了一些灵活多变的
[21m37s] 这样的一些战术
[21m38s] 多种火力 多种模式联合运用
[21m41s] 也让美国和以色列的
[21m43s] 防空反导系统
[21m48s] 在现代军事冲突中
[21m50s] 高超声速武器的穿透
[21m51s] 与无人机蜂群的饱和攻击
[21m54s] 虽是关键威胁
[21m55s] 但更具深远颠覆性的
[21m57s] 是战场成本效益失衡
[21m59s] 对防空体系带来的
[22m1s] 系统性难题
[22m3s] 这已超越了
[22m4s] 单一装备的性能竞争
[22m6s] 演变为从经济原理
[22m8s] 持久作战能力
[22m10s] 到战略自信的全方位压制
[22m13s] 引发了拦截不起
[22m15s] 消耗不起
[22m16s] 补充不上的三重困局
[22m20s] 以伊朗主力攻击武器
[22m22s] “见证者-136” 自杀式无人机为例
[22m25s] 这款被戏称作
[22m27s] 飞行摩托车的装备
[22m29s] 彻底打破了传统军工的
[22m31s] 精密制造范式
[22m33s] 机身使用民用级玻璃纤维
[22m35s] 和泡沫塑料拼装
[22m37s] 动力系统
[22m38s] 直接借用普通摩托车的
[22m40s] 二冲程发动机
[22m41s] 导航依靠
[22m42s] 民用GPS模块与简易惯性制导
[22m46s] 甚至部分核心零件
[22m48s] 来自拆解的汽车和家电
[22m50s] 从而极大压低了制造成本
[22m53s] 凭借民用技术军用化
[22m55s] 复杂系统简易化的理念
[22m57s] 其批量生产单价
[22m59s] 稳定在2万至5万美元之间
[23m2s] 某些简化版本
[23m4s] 甚至降至1.5万美元
[23m6s] 仅相当于高端防空导弹成本的
[23m9s] 极小一部分
[23m11s] 美以用于对抗的防空武器
[23m13s] 却如同天价奢侈品
[23m16s] 以色列“铁穹”系统的拦截弹
[23m18s] 作为远程防空核心弹药
[23m20s] 每枚成本
[23m21s] 达5万到10万美元
[23m24s] 这意味着
[23m25s] 即便成功拦截
[23m26s] 防御方的经济损失
[23m28s] 也远超进攻方
[23m30s] 更甚者
[23m31s] 美国“爱国者-3”拦截弹
[23m33s] 作为中程防空主力
[23m35s] 单枚成本飙升至
[23m37s] 400万至500万美元
[23m39s] 堪比用超级跑车
[23m41s] 撞击普通代步车
[23m43s] 无论胜负如何
[23m45s] 防御方已在战略层面
[23m47s] 沦为输家
[23m51s] 那么在效费比方面
[23m53s] 如果说对方在进攻的过程当中
[23m56s] 采用了很多廉价的方式
[23m58s] 或者说很多省钱的
[23m59s] 这样的一些技术手段
[24m1s] 像“见证者-136”
[24m3s] 其实它就是飞行的小摩托
[24m5s] 那么它的成本控制得很低
[24m7s] 可能要用先进的防空反导系统
[24m9s] 对它进行拦截
[24m11s] 而伊朗的一些地区盟友
[24m12s] 包括黎巴嫩真主党
[24m15s] 会使用大量的“卡桑”火箭弹
[24m16s] 也就是说
[24m17s] 更低成本的作坊工厂当中
[24m19s] 生产出来的这种火箭弹
[24m21s] 针对以色列进行打击
[24m22s] 那么色列方面使用的是什么
[24m24s] 是这种“塔米尔”拦截弹
[24m25s] 也就是“铁穹”系统的拦截弹
[24m28s] 在这样的 一种
[24m29s] 相互的消耗战的过程当中
[24m31s] 那么位列或者是美国
[24m33s] 他所面临的这种
[24m35s] 昂贵弹药的快速消耗
[24m37s] 和短缺的情况
[24m39s] 也会变得越来越多
[24m40s] 也会变得越来越明显
[24m43s] 由于战场上
[24m44s] 攻击和防御的效费比例
[24m46s] 严重失衡
[24m47s] 防空弹药库存告急
[24m49s] 形势十分紧迫
[24m51s] 3月18日
[24m52s] 以色列国防部火速向美国求援
[24m55s] 美军立刻出动C-17运输机
[24m58s] 紧急空运了近千枚拦截导弹
[25m1s] 为以色列的库存注入强心针
[25m4s] 与此同时
[25m5s] 美军从韩国
[25m7s] 亚太到欧洲多个据点
[25m9s] 迅速调集防空系统
[25m11s] 全力缓解战场上
[25m13s] 防空装备和弹药
[25m14s] 捉襟见肘的困境
[25m19s] 现代防空系统
[25m20s] 打造了一个从远程中段反导
[25m23s] 近程区域防空
[25m24s] 到近程末段拦截的完整链条
[25m28s] 构建了远近交错
[25m30s] 高低坚固的立体防御天网
[25m33s] 然而
[25m34s] 高超声速武器如闪电般突破
[25m37s] 无人机群的压制
[25m38s] 以及饱和式攻击的浪潮不断袭来
[25m41s] 让传统防空体系
[25m42s] 面临着严峻的考验
[25m46s] 攻防成本的天平
[25m48s] 正在严重倾斜
[25m49s] 威胁形势日新月异
[25m52s] 如何在提升拦截效果的同时
[25m54s] 勒紧成本的缰绳
[25m57s] 变得至关重要
[25m59s] 让防空网看得远
[26m1s] 拦得准
[26m2s] 扛得住
[26m3s] 耗得起
[26m4s] 成为了左右未来防空安全
[26m6s] 和战争胜负的
[26m8s] 关键棋局
[26m11s] 好了观众朋友们
[26m12s] 感谢您持续关注
[26m13s] 国防军事频道《军事科技》
[26m15s] 我们下周同一时间
[26m17s] 再见
File diff suppressed because one or more lines are too long
@@ -0,0 +1,310 @@
[0m7s] 导弹呼啸而过,战机低空穿梭,
[0m11s] 无人机如蜂群般袭来,
[0m13s] 这些空中威胁正不断挑战防御体系的极限,
[0m18s] 他们是如何被精确拦截的?究竟是什么力量能在遥远距离精准打击,在近在咫尺时完成致命一击呢?
[0m28s] 本期军事科技
[0m29s] 将带您逐步解析现代防空网络的复杂机制,
[0m34s] 亲眼见证科技与智慧打造的空中屏障,揭秘现代防空体系御敌于空的终极密码。
[1m14s] 各位观众你们好,欢迎收看军事科技,我是主持人蓝皓。
[1m19s] 从第二次世界大战时期的战机轰炸到冷战时期的导弹威慑,再到如今的无人机高超声速武器的崛起,
[1m28s] 空中威胁的形态啊不断的迭代,
[1m30s] 防御体系也在随之进化。
[1m34s] 而如今的现代化防空系统早已不再是单一武器的简单对抗了,
[1m39s] 而是构建了以远中近衔接,高中低覆盖为一体的立体化防御系统,
[1m45s] 仿佛一块层层镶嵌的空中盾牌,
[1m49s] 从千里之外的高空到咫尺之间的低空形成了无死角的防护,
[1m55s] 在与新型空中威胁持续对抗当中,上演着一场场激烈的
[2m1s] 攻与防的较量。
[2m18s] 2026年2月28日,美伊两国协同向伊朗发起军事打击,
[2m24s] 中东地区顿时战火纷飞,硝烟弥漫,
[2m28s] 随着冲突不断加剧,
[2m30s] 各方频繁动用弹道导弹、
[2m32s] 巡航导弹,
[2m33s] 高超声速武器及自杀式无人机等先进装备,
[2m37s] 展开密集的高强度空袭,
[2m41s] 波斯湾上空随即呈现出一场攻防交织的终极较量,
[2m46s] 涉及突破与拦截,毁灭与保卫。
[2m49s] 这场关乎生死存亡与战局走向的空中攻防战彻底爆发。
[3m4s] 在涉及远中近程和高中低空的全方位空战对抗中,
[3m10s] 弹道导弹与反导系统之间的对决,无疑是最具战略威慑力且最检验技术水平的顶峰交锋。
[3m19s] 其中中段反导作为现代战略防空的最高层级,
[3m24s] 更是左右战场局势的核心要素。
[3m27s] 这项技术常被形容为
[3m30s] 太空中以子弹击落子弹,
[3m33s] 它标志着当今世界军事科技的极致成就,也是战略防空领域真正的制高点。
[3m47s] 一枚中远程弹道导弹的飞行分为上升段,
[3m51s] 终端、
[3m52s] 末端
[3m53s] 三者在时空速度上的巨大差异,直接决定了拦截难度的天壤之别。
[4m0s] 上升段仅持续3~5分钟,时间窗口稍纵即逝,
[4m5s] 且需在敌国领土拦截,
[4m7s] 受部署限制难以实施拦截,成功率极低。
[4m12s] 末段导弹俯冲至几十公里至几公里高空,
[4m16s] 速度达马赫数10~20
[4m19s] 仅留数秒至十几秒的反应时间,
[4m22s] 同时面临机动变轨,
[4m24s] 多弹头诱饵及低空探测盲区,
[4m27s] 拦截风险高且成功率有限,
[4m30s] 唯有中短,
[4m31s] 导弹在100公里以上大气层外无动力滑行,
[4m35s] 飞行时间长达10~20分钟,
[4m38s] 轨迹由万有引力决定极度稳定,并未释放弹头与诱饵,反导系统有足够的时间预警测算轨迹并拦截,
[4m49s] 采用动能撞击可彻底消除地面威胁,
[4m52s] 是现代战略防空最理想效果最佳的黄金拦截期,
[4m58s] 也是各国反导技术研发的核心方向。
[5m8s] 虽然说呢中段反导拦截在整个反导作战的流程当中,那么它是比较容易实现的,或者说呢可以针对这个对方来袭的导弹
[5m20s] 进行精准的摧毁,但是最大的问题呢就是你的预警系统啊需要看得远,反导拦截弹呢需要飞得快,打得高打得远,所以对于技术方面的要求是比较高的,这就要求
[5m31s] 大型的相控阵预警雷达能够在极远的距离上,
[5m35s] 针对外大气层飞行的这种小型高速移动的目标能够进行精准的锁定,而且呢要对它进行持续的跟踪,还要有相关的这样的一个计算系统,针对它的飞行轨迹进行计算,这样的话呢
[5m49s] 才能够有效的引导反导拦截弹在外大气层对它进行精准的这样的一个截杀,而且呢反导拦截弹的性能要求非常高,不仅要飞得高飞得远飞得快,
[6m1s] 而且呢甚至还要配备有动能的战斗部,要针对处于飞行状态的弹道导弹进行精准的撞击,那么确保它
[6m10s] 是啊被彻底摧毁。
[6m15s] 3月5日,
[6m16s] 伊朗伊斯兰革命卫队发布声明称,
[6m19s] 在真实承诺4行动的第十七轮中,
[6m23s] 伊朗动用高超声速导弹和攻击无人机,成功突破美国萨德防御系统,
[6m29s] 打击了以色列国防部大楼与本古里安国际机场,
[6m34s] 并摧毁了7套雷达系统及核心配套设备。
[6m39s] 同期美国内部评估报告透露,作为中东关键中段反导装备的以色列箭式系统,
[6m46s] 在拦截伊朗中程弹道导弹时显现重大短板,
[6m50s] 实际拦截率远未达到原有设计标准。
[6m56s] 那么在以色列的国土范围内,
[6m59s] 呃有箭二箭三反导系统,也有美国
[7m2s] 部署的萨德反导系统,但是我们看仍然有数量相当多的伊朗弹道导弹成功突防,
[7m9s] 针对以色列区域内的目标进行了毁伤。
[7m12s] 为什么说箭二箭三以及萨德系统它联起手来,也没有办法针对伊朗的弹道导弹进行这种百%的防范和拦截。我认为呢首先是伊朗弹道导弹的技术有所提升,
[7m25s] 部分伊朗的弹道导弹采用了这种高超音速的战斗部,在飞行的末段会有突然的加速,或者说有急剧的飞行轨迹的变化,这样的话呢萨德系统
[7m36s] 和箭二箭三反导系统很难对它进行精准的拦截。此外呢伊朗的一些弹道导弹,比如说像霍拉姆沙赫尔四,
[7m44s] 那么它是一种重型的这样的一个弹头的设计理念,那么1.5吨到两吨的战斗部,啊它可以采用这种集束弹头啊的这样的一个模式,
[7m54s] 飞到了目标区上空之后,打出了一个满天星的效果,数10枚子弹头
[8m0s] 飞向目标区域,
[8m1s] 所有的防空反导系统都没有办法对它进行拦截。
[8m5s] 那么还有另外一种情况,美国的反导作战系统和以色列的箭二箭三反导系统,它没有办法进行联网作战,是各打各的,这样的话呢在相关的区域内没有办法进行目标信息的共享,
[8m17s] 那么也无法形成合力。
[8m20s] 2026年3月15日,
[8m23s] 伊朗伊斯兰革命卫队在真实承诺四军事行动中,
[8m27s] 首次实战部署了泥石导弹。
[8m31s] 与此同时,美军从韩国紧急调遣了萨德反导系统,
[8m35s] 以加强该地区的防御,
[8m37s] 应对伊朗导弹带来的持续威胁。
[8m43s] 若将远程反导视作千里点穴的区域防空手段,
[8m48s] 那么中程防空啊便是中空守护网,
[8m51s] 承担着衔接远近防御的关键使命。
[8m56s] 它覆盖数10公里乃至100多公里的中高空区域,
[9m0s] 作为防空体系中的
[9m1s] 中坚力量,
[9m3s] 承担起区域防空重任,护卫城市军事要地等高价值目标,成为整个防空网络中承上启下的核心组成部分。
[9m22s] 中程防空作为现代防空作战系统的关键环节,其防御半径一般在50~200公里之间,
[9m30s] 拦截高度重点覆盖10~20公里的中高空域。
[9m36s] 这片空域正是现代战争中空中威胁密集活动的核心地带。
[9m42s] 敌方战机若要突破外层防御,
[9m45s] 打击纵深关键目标必须穿越此区域。
[9m49s] 巡航导弹虽常利用低空突防,
[9m52s] 但多数情况下仍需在中高空调整姿态,
[9m56s] 寻找防御薄弱点,
[9m58s] 而中近程导弹在俯冲末段同样会经过这一高度区间,
[10m3s] 其高速特性要求中程防空系统及早介入,精确拦截。
[10m9s] 可以说
[10m10s] 这片中高空域是空中威胁,渗向核心目标的必经通道,
[10m15s] 也是防空体系中承前启后的关键拦截区。
[10m26s] 在现代化的防空作战行动当中,啊
[10m29s] 中程防空的难度是非常大的。
[10m31s] 因为
[10m32s] 很多对方的啊这种空中的来袭目标,其实它都是在中程防空的任务范围内,
[10m39s] 目标的属性是非常多的。
[10m41s] 此外呢在复杂的电磁环境的这样的一个状态下,中程的防空体系也可能会出现失灵的情况,啊因为对方可能会出动电子战飞机,
[10m52s] 针对你的防空作战体系进行压制。此外呢有的时候呢面对各种各样的目标数量众多的目标,那么中程防空系统它
[11m0s] 的这样的一个火力的密集程度可能会
[11m4s] 出现不足的情况。比如说一部发射机上,
[11m6s] 它只有数量有限的中程防空导弹打完了之后,那么对方的目标
[11m11s] 连续的持续的袭来,
[11m13s] 那中程防空体系可能也会面临弹药不足,火力不足的情况。
[11m21s] 在近期,
[11m22s] 美以联合对伊朗的军事行动中,中程导弹防御系统成为防空体系中的核心作战力量,
[11m29s] 也是双方攻防较量最为激烈的领域。
[11m33s] 为巩固中诚防御屏障,
[11m35s] 美国运用爱国者防空反导系统,
[11m39s] 结合天基预警卫星,陆基远程雷达及集成化指挥控制中心,
[11m45s] 打造了能够覆盖30公里至150公里空域的拦截体系,
[11m50s] 着重防护其军事基地与国防工业区域。
[11m54s] 然而面对伊朗高超音速武器,配合无人机集群的非对称组合式打击,
[12m1s] 此前被美军公开宣称拦截成功率可达80%~97%的爱国者系统,
[12m8s] 实际拦截率已跌至5%以下,
[12m12s] 系统还频频出现拦截假目标,漏过真实弹头的失误。
[12m20s] 爱国者曾在海湾战争期间
[12m23s] 一战成名,
[12m24s] 啊那当时呢美军爱国者系统它所拦截的导弹呢都是伊拉克
[12m30s] 萨达姆政权军队啊使用的比较老旧的飞毛腿弹道导弹,它的飞行轨迹是一个典型的抛物线,不会有这种
[12m39s] 呃机动变轨的这样的一些动作,所以呢只要是探测到了它的飞行轨迹,
[12m44s] 那么多发射一些爱国者拦截弹是可以对它进行有效拦截的,但是现代化的弹道导弹突防能力都很强,
[12m52s] 飞行轨迹是变化的,甚至可以说是有一些打水漂的这样的一个飞行轨迹,速度又很快,那么甚至可能会携带更多的诱饵弹和干扰弹,所以呢爱国者系统可能根本就看不清,
[13m3s] 可能也就追不上。
[13m6s] 爱国者导弹在部分实战场景中拦截效果未达预期,
[13m11s] 这一表现使得美以联合构建的中程防空反导系统暴露出短板,
[13m17s] 也让多国对该系统产生信任危机。
[13m23s] 在现代防空系统中,低空与超低空是远程及中程防空存在的短板,
[13m30s] 受到地球曲率地形掩蔽等影响,
[13m33s] 远程雷达难以追踪低空目标,
[13m36s] 而中程防空导弹呢在低空条件下,制导系统易受地面杂波的干扰,致使拦截效能下降。
[13m44s] 因此啊
[13m44s] 近程防空系统由此诞生,
[13m48s] 专门用于近距离的防护,
[13m50s] 弥补了防空网络在低空领域的不足。
[14m1s] 对普通公众而言,近程防空无疑是最常见最显眼且视觉冲击力最强的防空形式,那些在网络短片新闻报道和战场记录中常见的导弹腾空而起,
[14m15s] 尾焰撕裂黑夜,目标在空中爆炸,
[14m18s] 火光刹那映亮天空的拦截画面,
[14m22s] 大多源自近程防空系统,
[14m25s] 这些系统射程较短,但部署便捷,响应迅速。
[14m30s] 通常在目标接近阵地城市或重要设施的最后一刻才发动攻击,
[14m36s] 因而更易被现场捕捉,媒体记录并广泛传播。
[14m40s] 正是由于这种高频曝光,近程防空在许多人心中几乎成了防空的代名词。
[14m48s] 然而实际上近程防空在整体防空网络中充当的是最终贴身防线的功能,
[14m55s] 专门填补远程和中程防空无法覆盖的低空及超低空漏洞。
[15m4s] 近程防空作战体系在实际应用的过程当中,有的时候呢
[15m8s] 可能会成为战场上的奇兵,啊因为对方的直升机啊甚至包括这个战斗机在低空飞行的时候,啊它可能会放松警惕,另外一个来不及反应。
[15m17s] 所以这个时候近程防空火力针对目标进行射击的时候,战斗机很难对它进行规避,有的时候呢甚至连发射红外诱饵弹的这个时间都没有,
[15m27s] 但是呢近程防空也有很大的难度,因为很多近程防空作战体系,啊
[15m32s] 它的搜索系统是比较简单的,视野不够宽广,也无法针对远距离的目标进行识别,所以呢有的近程防空作战体系它本质上来讲是近视眼,
[15m43s] 而且呢还涉及到一些地形起伏的问题。
[15m45s] 如果对方利用这种地形起伏,啊那么去进行超低空的突防,那么在相关区域内部署的一些传感器,比如说低空搜索雷达或者是光学红外传感器,可能没有办法及时有效的识别目标。
[15m58s] 那么这些低空突防的这样的一些空中作战平台,也可能会针对
[16m2s] 啊这个近程的防空作战体系,包括相关的防空阵地进行打击和压制。
[16m11s] 在近期美以联合对伊朗的军事行动中,
[16m14s] 以色列拉斐尔公司研发的铁穹近程防空系统,经历了自2011年部署以来最激烈且最具转折性的实战检验。
[16m25s] 这款以往在冲突中以85%~90%拦截率享誉世界的明星武器,
[16m32s] 在伊朗真实承诺4行动的饱和攻击下,
[16m36s] 其卓越声誉荡然无存。
[16m39s] 以色列国防部3月17日向国会递交的评估报告中指出,
[16m45s] 面对伊朗连续发动的60多波攻势,
[16m48s] 铁穹系统的实际拦截率从历史标榜的90%以上骤降至约50%,
[16m55s] 而在集束弹头密集倾泻与无人机蜂群低空突袭的关键战斗阶段,
[17m1s] 其拦截成功率更是下滑至30%以下,
[17m5s] 刷新了服役以来的最低性能纪录。
[17m12s] 那么我们注意到在此次军事行动的过程当中,啊铁穹系统表现平平,我认为呢
[17m17s] 呃可能是有两方面的考虑,一方面呢就是它配套的
[17m20s] 它这种传感器啊或者是预警体系,可能是遭到了对方的火力打击,有部分铁穹系统
[17m26s] 啊那么针对空中来袭目标,它的反应速度不够快,或者说呢呃它的这样的一个情报和目标的引导体系啊不够完善。
[17m36s] 另外一个呢就是铁穹系统,它所使用的是塔米尔拦截弹,
[17m40s] 这种拦截弹,啊
[17m41s] 但是由于它装备和使用的数量比较多,所以呢它必须要进行成本的控制,啊它的飞行速度
[17m48s] 其实并没有那么快,啊那么有的时候针对高速目标进行打击的时候,可能会出现速度跟不上的情况。
[17m55s] 此外,呢现在伊朗主要是使用弹道导弹,针对以色列进行打击,
[18m0s] 面对高空高速飞行的弹道导弹,
[18m3s] 或者是配备有
[18m4s] 高超音速战斗部的弹道导弹。
[18m6s] 嗯这个铁穹系统可能它的拦截范围拦截的高度也都不足。
[18m10s] 当然了伊朗也使用了大量的这个无人机,但是这一次针对以色列进行后续的反击,伊朗更加注重使用啊这种中程的弹道导弹,或者是突防能力很强的弹道导弹。
[18m22s] 那么面对这样的一种情况,铁穹系统啊它就会出现
[18m26s] 啊反应速度不够快,啊包括呢啊这个拦截的范围拦截的高度都存在不足的情况。
[18m35s] 近程防空系统作为整个防空架构中关键的最后屏障,
[18m40s] 肩负着坚守底线,护卫要害的核心职责,
[18m45s] 但它并非完美无缺,仍存在明显的短板。
[18m50s] 其防御范围通常较为有限,
[18m53s] 探测与拦截能力都集中在较小区域,
[18m56s] 大多只能执行小尺度重点目标的局部防护任务,
[19m1s] 无法如同中远程防空系统那样,实现广大空域的大范围远距离监控与狙击。
[19m8s] 因此近程防空系统不能独自支撑一国一城或整个战区的全面防空安全,
[19m16s] 它更像是一件贴身的防弹衣,而非是能覆盖全域的保护罩,
[19m24s] 远程中程与近程防空系统相互配合,
[19m29s] 在现代战争中构筑了层次分明,分工明确、
[19m33s] 紧密衔接的全空域立体防空网络。
[19m37s] 三者各尽其责,彼此支援,
[19m40s] 逐层拦截,
[19m41s] 形成了一套由外至内,由高空到低空由远及近的周密防御体系。
[19m49s] 不过啊今年多场高强度军事冲突的实际表现,这套看似牢不可破的防空体系正持续受到新兴战场模式的严峻挑战,
[19m59s] 其传统作战思路和防御能力正在不断遭受冲击
[20m4s] 与重塑。
[20m14s] 在美以联合对伊朗发动的大规模军事行动中,
[20m18s] 可以清晰看到,
[20m20s] 美军以色列军队以及伊朗的防空系统都遭遇了前所未有的考验,
[20m26s] 在以往严密的多层防护网络,在实战中屡次被突破撕裂,甚至彻底崩溃。
[20m34s] 美军采用了以爱国者和萨德反导系统为核心的中远程导弹防御体系,
[20m41s] 以色列则调动了由铁穹、大卫投石索和箭式系统组成的全域防空反导系统。
[20m49s] 然而针对高超声速武器穿透无人机群饱和攻击,
[20m53s] 复合诱饵欺骗与强电磁干扰等策略,
[20m57s] 拦截失败的情况依然频繁发生。
[21m3s] 在此次行动的过程当中,啊美以的防空反导系统频频被这个洞穿,也就是说呢伊朗使用了啊一系列的突防手段,最终啊打穿了美国和以色列的一些防空反导的这个保护伞。
[21m17s] 那么针对相关的区域啊构成了更为猛烈的这个火力打击,我认为呢
[21m22s] 呃就是
[21m23s] 呃存在一些问题,比如说它系统之间没有进行有效的联合,存在一些这个兼容的问题,
[21m30s] 在各自为战的状态下肯定会出现漏洞。
[21m33s] 另外一个,呢
[21m33s] 而伊朗也是采取了一些灵活多变的这样的一些战术,多种火力多种模式联合运用,也让美国和以色列的防空反导系统防不胜防。
[21m47s] 在现代军事冲突中,
[21m49s] 高超声速武器的穿透与无人机蜂群的饱和攻击虽是关键威胁,
[21m55s] 但更具深远颠覆性的是战场成本效益失衡对防空体系带来的系统性难题。
[22m3s] 这已超越了单一装备的性能竞争,演变为从经济原理持久作战能力到战略自信的全方位压制,
[22m12s] 引发了拦截不起、消耗不起、补充不上的三重困局。
[22m20s] 以伊朗主力攻击武器见证者136自杀式无人机为例,
[22m25s] 这款被戏称作飞行摩托车的装备,
[22m28s] 彻底打破了传统军工的精密制造范式。
[22m32s] 机身使用民用级玻璃纤维和泡沫塑料拼装
[22m36s] 动力系统,
[22m37s] 直接借用普通摩托车的二冲程发动机,
[22m41s] 导航依靠民用GPS模块与简易惯性制导,
[22m46s] 甚至部分核心零件来自拆解的汽车和家电,从而极大压低了制造成本。
[22m53s] 凭借民用技术军用化、复杂系统简易化的理念,
[22m57s] 其批量生产单价稳定在2万至5万美元之间,
[23m2s] 某些简化版本甚至降至1.5万美元,
[23m6s] 仅相当于高端防空导弹成本的极小一部分。
[23m10s] 美以用于对抗的防空武器却如同天价奢侈品。
[23m16s] 以色列铁穹系统的拦截弹作为近程防空核心弹药,
[23m20s] 每枚成本达5万到10万美元,
[23m23s] 这意味着即便成功拦截防御方的经济损失,也远超进攻方。
[23m30s] 更甚者,美国爱国者三拦截弹作为中程防空主力,
[23m35s] 单枚成本飙升至400万至500万美元,
[23m39s] 堪比用超级跑车撞击普通代步车。
[23m43s] 无论胜负如何,防御方已在战略层面沦为输家。
[23m50s] 那么在效费比方面,啊如果说对方在进攻的过程当中啊采用了很多廉价的方式,或者说很多省钱的这样的一些技术手段,
[24m1s] 像见证者136
[24m2s] 其实呢它就是飞行的小摩托,那么它的成本控制得很低,但是对方可能要用先进的防空反导系统对它进行拦截。
[24m10s] 而伊朗的一些地区盟友,包括这个
[24m13s] 黎巴嫩真主党会使用大量的卡桑火箭弹,那么也就是说更低成本的作坊工厂当中生产出来的
[24m20s] 这种火箭弹针对以色列进行打击,那以色列方面使用的是什么?呢是这种塔米尔拦截弹,也就是铁穹系统的拦截弹。
[24m27s] 那么在这样的一种
[24m28s] 在相互的消耗战的过程当中,那以色列
[24m32s] 呃或者是美国它所面临的
[24m34s] 这种昂贵弹药的快速消耗和短缺的情况也会变得越来越多,也会变得越来越明显。
[24m42s] 由于战场上攻击和防御的效费比例严重失衡,
[24m47s] 防空弹药库存告急,
[24m49s] 形势十分紧迫。
[24m51s] 3月18日,
[24m52s] 以色列国防部火速向美国求援,
[24m55s] 美军立刻出动c17运输机,
[24m58s] 紧急空运了近千枚拦截导弹,
[25m1s] 为以色列的库存注入强心针。
[25m4s] 与此同时,
[25m5s] 美军从韩国、亚太到欧洲多个据点,迅速调集防空系统,
[25m11s] 全力缓解战场上防空装备和弹药捉襟见肘的困境。
[25m18s] 现代防空系统打造了一个从远程中段反导,
[25m22s] 近程区域防空到近程末段拦截的
[25m26s] 完整链条,
[25m28s] 构建了远近交错高低兼顾的立体防御天网。
[25m33s] 然而
[25m34s] 高超声速武器如闪电般突破,
[25m36s] 无人机群的压制以及饱和式攻击的浪潮不断袭来,
[25m40s] 让传统防空体系面临着严峻的考验,
[25m46s] 攻防成本的天平正在严重倾斜,
[25m49s] 威胁形势日新月异,
[25m51s] 如何在提升拦截效果的同时,勒紧成本的缰绳,
[25m56s] 变得
[25m57s] 至关重要,
[25m59s] 让防空网看得远,
[26m1s] 拦得准,
[26m2s] 扛得住,
[26m3s] 耗得起,
[26m4s] 成为了左右未来防空安全和战争胜负的
[26m8s] 关键棋局。
[26m11s] 好了,观众朋友们,感谢您持续关注国防军事频道,军事科技,我们下周同一时间
[26m17s] 再见。
[26m19s] 77载深蓝砺剑,
[26m21s] 77载向海图强。
[26m25s] 在人民海军的序列中
[26m27s] 有这样一些特殊的存在,
[26m29s] 他们不担负作战任务,而是青年官兵驶向大洋的第一课堂。
[26m36s] 看戚继光舰启程远航,
[26m40s] 听郑和简续写传奇。
[26m43s] 值此人民海军成立77周年之际,
[26m46s] 军事科技
[26m47s] 与您和海军青年官兵一起
[26m50s] 启程远航,乘风破浪。
@@ -0,0 +1 @@
<table><td colspan="3">As of December 31,<i>(In millions)</i>201820172016Total return4.9%5.0%5.1%</table>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,268 @@
# -*- coding: utf-8 -*-
"""
阶段 A:抽帧 + OCR(产出原始缓存 ocr_raw.jsonl)
================================================
策略:OCR 优先,每帧都 OCR。绝不使用亮度判空/dHash/IoU 过滤。
按 idx 断点续跑:读取已有 ocr_raw.jsonl 中最大 idx,从 max_idx+1 继续。
"""
import base64
import json
import subprocess
import sys
from pathlib import Path
import requests
# 根治 Windows 控制台 GBK 崩溃:强制 stdout 用 UTF-8
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
# ========================================================================
# 全局参数(放文件顶部做常量,方便后续调)
# ========================================================================
FPS = 1
CROP_BOTTOM_RATIO = 0.2
SIM_THRESHOLD = 0.85
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL = "deepseek-ocr"
OCR_PROMPT = "Free OCR."
# 工作目录(脚本所在目录)
WORK_DIR = Path(__file__).resolve().parent
SOURCE_VIDEO_DIR = WORK_DIR / "source"
FRAMES_DIR = WORK_DIR / "frames_v2"
OCR_RAW_PATH = WORK_DIR / "ocr_raw.jsonl"
# ========================================================================
# A1: 定位源视频
# ========================================================================
def find_source_video():
"""在工作目录 source/ 下定位 .mp4 或 .mkv 源视频"""
for ext in (".mp4", ".mkv"):
candidates = list(SOURCE_VIDEO_DIR.glob(f"*{ext}"))
if candidates:
return candidates[0]
raise FileNotFoundError(
f"{SOURCE_VIDEO_DIR} 中未找到 .mp4 或 .mkv 文件"
)
def get_video_info(video_path):
"""用 ffprobe 获取时长(秒)和分辨率(宽x高)"""
cmd = [
"ffprobe", "-v", "error",
"-select_streams", "v:0",
"-show_entries", "stream=duration,width,height",
"-of", "json",
str(video_path),
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
raise RuntimeError(f"ffprobe 失败:\n{result.stderr}")
info = json.loads(result.stdout)
stream = info["streams"][0]
duration = float(stream.get("duration", 0))
width = stream["width"]
height = stream["height"]
return duration, width, height
# ========================================================================
# A2: ffmpeg 抽帧
# ========================================================================
def extract_frames(video_path):
"""
用 ffmpeg 按 1fps 抽帧,裁切下方 20% 字幕区域。
输出到 frames_v2/frame_%04d.png(从 0001 开始)。
返回按文件名排序的帧路径列表。
"""
FRAMES_DIR.mkdir(parents=True, exist_ok=True)
# 清理旧帧避免残留
for old in FRAMES_DIR.glob("frame_*.png"):
old.unlink()
crop_expr = (
f"fps={FPS},"
f"crop=iw:ih*{CROP_BOTTOM_RATIO}:0:ih*{1 - CROP_BOTTOM_RATIO}"
)
frame_pattern = str(FRAMES_DIR / "frame_%04d.png")
cmd = [
"ffmpeg",
"-i", str(video_path),
"-vf", crop_expr,
"-q:v", "2",
frame_pattern,
"-y",
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
raise RuntimeError(f"ffmpeg 抽帧失败:\n{result.stderr}")
frames = sorted(FRAMES_DIR.glob("frame_*.png"))
return frames
# ========================================================================
# OCR 单帧
# ========================================================================
def ocr_single_frame(image_path):
"""
调用本地 Ollama OCR 识别单帧。
API: POST /api/generate,单轮,图片走 base64,stream=false。
返回 strip 后的文本;异常向上抛出让调用方处理。
"""
with open(image_path, "rb") as fh:
img_bytes = fh.read()
img_b64 = base64.b64encode(img_bytes).decode("utf-8")
body = {
"model": MODEL,
"prompt": OCR_PROMPT,
"images": [img_b64],
"stream": False,
}
resp = requests.post(OLLAMA_URL, json=body, timeout=120)
resp.raise_for_status()
data = resp.json()
text = data.get("response", "").strip()
return text
# ========================================================================
# A3: 单帧验证
# ========================================================================
def test_single_frame():
"""
A3: 验证单帧 OCR。
对 frame_0076.png 调一次 OCR,打印原始返回。
若对不上预期则中止,不进入批量。
"""
test_frame = FRAMES_DIR / "frame_0076.png"
if not test_frame.exists():
print("[A3] [WARN] test frame not found:", test_frame)
print("[A3] skip single-frame check")
return
print("[A3] test frame:", test_frame.name)
try:
raw_text = ocr_single_frame(test_frame)
except Exception as exc:
print("[A3] [FAIL] OCR call failed:", exc)
print("[A3] check Ollama / deepseek-ocr, abort.")
sys.exit(1)
print("[A3] raw return:", repr(raw_text))
if "" in raw_text or "" in raw_text:
print("[A3] [OK] verification passed.")
else:
print("[A3] [WARN] expected '各位观众你们好', got:", repr(raw_text))
print("[A3] abort.")
sys.exit(1)
# ========================================================================
# A4: 批量 OCR(按 idx 断点续跑 + 单帧容错)
# ========================================================================
def batch_ocr(frames):
"""
按 idx 断点续跑:
- 读取 ocr_raw.jsonl 中已有记录的最大 idx
- 只处理 idx > max_existing 的帧
- 每帧 OCR 外包 try/except,报错写 error 字段并 continue,绝不崩整个进程
- 进度只打数字: f"{idx}/{total}", flush=True
"""
total = len(frames)
# --- 读已有记录,取最大 idx ---
max_existing_idx = 0
if OCR_RAW_PATH.exists():
with open(OCR_RAW_PATH, "r", encoding="utf-8") as fh:
for line in fh:
line = line.strip()
if not line:
continue
try:
rec = json.loads(line)
max_existing_idx = max(max_existing_idx, rec.get("idx", 0))
except json.JSONDecodeError:
pass
if max_existing_idx >= total:
print(f"[A4] all {total} frames already done (max idx={max_existing_idx}), skip.")
return
start_idx = max_existing_idx + 1
print(f"[A4] max existing idx = {max_existing_idx}, resume from idx {start_idx}")
# --- 构建 idx -> frame_path 映射 ---
idx_to_path = {}
for fp in frames:
idx = int(fp.stem.split("_")[1])
idx_to_path[idx] = fp
# --- 追加写入 ---
with open(OCR_RAW_PATH, "a", encoding="utf-8") as fh:
for idx in range(start_idx, total + 1):
t_sec = idx - 1
frame_path = idx_to_path.get(idx)
if frame_path is None:
# 帧文件缺失(不应发生,但容错)
record = {"idx": idx, "t_sec": t_sec, "text": "", "error": "frame file missing"}
fh.write(json.dumps(record, ensure_ascii=False) + "\n")
fh.flush()
print(f"{idx}/{total}", flush=True)
continue
try:
text = ocr_single_frame(frame_path)
record = {"idx": idx, "t_sec": t_sec, "text": text}
except Exception as exc:
record = {"idx": idx, "t_sec": t_sec, "text": "", "error": str(exc)}
fh.write(json.dumps(record, ensure_ascii=False) + "\n")
fh.flush()
if idx % 50 == 0:
print(f"{idx}/{total}", flush=True)
print(f"{total}/{total}", flush=True)
print(f"[A4] OCR done, {total} records in {OCR_RAW_PATH}")
# ========================================================================
# 主流程
# ========================================================================
def main():
# A1
video_path = find_source_video()
duration, width, height = get_video_info(video_path)
print(f"[A1] video: {video_path}")
print(f"[A1] duration: {duration:.1f}s resolution: {width}x{height}")
# A2: skip re-extract if frames already exist
FRAMES_DIR.mkdir(parents=True, exist_ok=True)
existing = sorted(FRAMES_DIR.glob("frame_*.png"))
if existing:
print(f"[A2] {len(existing)} frames already exist, skip re-extract")
frames = existing
else:
print(f"[A2] ffmpeg extract (fps={FPS}, crop_bottom_ratio={CROP_BOTTOM_RATIO})...")
frames = extract_frames(video_path)
print(f"[A2] extracted {len(frames)} frames -> {FRAMES_DIR}")
# A3
test_single_frame()
# A4
batch_ocr(frames)
print("\nstage A done.")
if __name__ == "__main__":
main()
@@ -0,0 +1,300 @@
# -*- coding: utf-8 -*-
"""
阶段 B:文本去重 + 出稿(只读缓存,可反复重跑调阈值)
=======================================================
策略:基于 difflib 文本相似度折叠连续重复段,绝不使用像素级过滤。
"""
import csv
import json
import re
from difflib import SequenceMatcher
from pathlib import Path
# ═══════════════════════════════════════════════════════════════
# 全局参数(与阶段 A 共享,放文件顶部做常量)
# ═══════════════════════════════════════════════════════════════
FPS = 1
CROP_BOTTOM_RATIO = 0.2
SIM_THRESHOLD = 0.85
# 工作目录
WORK_DIR = Path(__file__).resolve().parent
OCR_RAW_PATH = WORK_DIR / "ocr_raw.jsonl"
B_MANUSCRIPT_PATH = WORK_DIR / "B稿_v2.txt"
DEBUG_CSV_PATH = WORK_DIR / "dedup_debug.csv"
BLANK_FILTERED_PATH = WORK_DIR / "blank_filtered.txt"
def similarity(a, b):
"""计算两个文本的 difflib 相似度(0.0 ~ 1.0)"""
if not a or not b:
return 0.0
return SequenceMatcher(None, a, b).ratio()
def is_blank_ocr(text):
"""基于文本的空场判定:空串 / HTML幻觉 / 不含汉字"""
t = text.strip()
if not t: # 空串
return True
if '<' in t and '>' in t: # HTML/markup 幻觉(如 <table>)
return True
if not re.search(r'[\u4e00-\u9fff]', t): # 不含任何汉字 → 非本节目字幕
return True
return False
# ═══════════════════════════════════════════════════════════════
# B1: 读缓存
# ═══════════════════════════════════════════════════════════════
def load_ocr_raw():
"""读 ocr_raw.jsonl,按 idx(时间)升序返回记录列表"""
if not OCR_RAW_PATH.exists():
raise FileNotFoundError(
f"ocr_raw.jsonl 不存在: {OCR_RAW_PATH}\n"
"请先跑阶段 A(stage_a_extract_ocr.py)。"
)
records = []
with open(OCR_RAW_PATH, "r", encoding="utf-8") as fh:
for line in fh:
line = line.strip()
if not line:
continue
rec = json.loads(line)
records.append(rec)
# 按 idx 升序
records.sort(key=lambda r: r["idx"])
return records
# ═══════════════════════════════════════════════════════════════
# B2: 折叠连续重复段(裁判在此,基于文本不基于像素)
# ═══════════════════════════════════════════════════════════════
def collapse_segments(records):
"""
维护"当前字幕"(文本 + 起始 t_sec),遍历每帧:
- 文本为空 → 空场:结束当前字幕(若有),并清空,不开新段。
- 非空且与当前字幕文本的 difflib 相似度 ≥ SIM_THRESHOLD → 同一条,并入当前段(记下这条文本备投票)。
- 非空且相似度 < SIM_THRESHOLD → 结束并输出当前段,用这帧开新段。
只比时间相邻帧,只折叠连续段;绝不全局去重。
每段最终文本 = 段内出现次数最多的 OCR 文本(多数投票,抵消个别帧抖动)。
每段时间戳 = 段内最早 t_sec。
返回: (segments, debug_rows)
segments: [{"start_t": float, "text": str}, ...]
debug_rows: [{idx, t_sec, ocr_text, decision, merged_into_start_t}, ...]
"""
segments = []
debug_rows = []
if not records:
return segments, debug_rows
current_text = None # 当前段内用于比对的参考文本
current_texts = [] # 当前段内所有 OCR 文本(用于投票)
current_start_t = None # 当前段起始 t_sec
current_segment_indices = [] # 当前段包含的帧号列表
def _finalize_segment():
"""输出当前段(若存在)"""
nonlocal current_text, current_texts, current_start_t, current_segment_indices
if current_text is not None and current_texts:
# 多数投票:选出现次数最多的文本
text_counts = {}
for t in current_texts:
text_counts[t] = text_counts.get(t, 0) + 1
best_text = max(text_counts, key=lambda k: text_counts[k])
segments.append({
"start_t": current_start_t,
"text": best_text,
})
current_text = None
current_texts = []
current_start_t = None
current_segment_indices = []
for rec in records:
ocr_text = rec["text"]
if is_blank_ocr(ocr_text):
# 空场:结束当前字幕(若有),并清空,不开新段
if current_text is not None:
_finalize_segment()
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "blank",
"merged_into_start_t": "",
})
continue
if current_text is None:
# 开新段
current_text = ocr_text
current_texts = [ocr_text]
current_start_t = rec["t_sec"]
current_segment_indices = [rec["idx"]]
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "new",
"merged_into_start_t": rec["t_sec"],
})
else:
sim = similarity(current_text, ocr_text)
if sim >= SIM_THRESHOLD:
# 同一条,并入当前段
current_texts.append(ocr_text)
current_segment_indices.append(rec["idx"])
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "merged",
"merged_into_start_t": current_start_t,
})
else:
# 结束当前段,用这帧开新段
_finalize_segment()
current_text = ocr_text
current_texts = [ocr_text]
current_start_t = rec["t_sec"]
current_segment_indices = [rec["idx"]]
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "new",
"merged_into_start_t": rec["t_sec"],
})
# 遍历结束,落最后一个段
_finalize_segment()
return segments, debug_rows
# ═══════════════════════════════════════════════════════════════
# B3: 输出 B稿_v2.txt
# ═══════════════════════════════════════════════════════════════
def write_b_manuscript(segments):
"""
输出 B稿_v2.txt,每行格式: [XmYs] 文本
例: [1m18s] 我是主持人蓝皓
"""
lines = []
for seg in segments:
t = seg["start_t"]
m = int(t) // 60
s = int(t) % 60
cleaned = re.sub(r'^[#*\->`\s]+', '', seg['text']).strip()
lines.append(f"[{m}m{s}s] {cleaned}")
with open(B_MANUSCRIPT_PATH, "w", encoding="utf-8") as fh:
fh.write("\n".join(lines) + "\n")
print(f"[B3] B稿_v2.txt 写入: {B_MANUSCRIPT_PATH} ({len(lines)} 行)")
return lines
# ═══════════════════════════════════════════════════════════════
# B4: 输出 dedup_debug.csv
# ═══════════════════════════════════════════════════════════════
def write_debug_csv(debug_rows):
"""
输出 dedup_debug.csv,逐帧记:
idx, t_sec, ocr_text, decision(new/merged/blank), merged_into_start_t
"""
with open(DEBUG_CSV_PATH, "w", encoding="utf-8", newline="") as fh:
writer = csv.writer(fh)
writer.writerow([
"idx", "t_sec", "ocr_text",
"decision", "merged_into_start_t",
])
for row in debug_rows:
writer.writerow([
row["idx"],
row["t_sec"],
row["ocr_text"],
row["decision"],
row["merged_into_start_t"],
])
print(f"[B4] dedup_debug.csv 写入: {DEBUG_CSV_PATH} ({len(debug_rows)} 行)")
# ═══════════════════════════════════════════════════════════════
# 主流程
# ═══════════════════════════════════════════════════════════════
def main():
print(f"[B] SIM_THRESHOLD = {SIM_THRESHOLD}")
# B1
records = load_ocr_raw()
print(f"[B1] 读取 ocr_raw.jsonl,共 {len(records)} 条记录")
# B2
segments, debug_rows = collapse_segments(records)
print(f"[B2] 折叠完成: {len(segments)} 个不连续字幕段")
print(f"[B2] 调试行数: {len(debug_rows)}")
# B3
lines = write_b_manuscript(segments)
# B4
write_debug_csv(debug_rows)
# ═══════════════════════════════════════════════════════════
# 跑完报告
# ═══════════════════════════════════════════════════════════
total_frames = len(records)
ocr_success = sum(1 for r in records if r["text"].strip())
blank_count = sum(1 for r in records if is_blank_ocr(r["text"]))
# 收集所有"被判空场但原文本非空"的去重文本
blank_but_nonempty = set()
for r in records:
t = r["text"]
if is_blank_ocr(t) and t.strip():
blank_but_nonempty.add(t)
print("\n" + "=" * 60)
print("跑完报告")
print("=" * 60)
print(f"抽帧总数: {total_frames}")
print(f"OCR 成功数(非空): {ocr_success}")
print(f"空场数: {blank_count}")
print(f"B稿_v2.txt 最终行数: {len(lines)}")
print("=" * 60)
print(f"B 稿路径: {B_MANUSCRIPT_PATH}")
print(f"调试表路径: {DEBUG_CSV_PATH}")
# 写出"被判空场但原文本非空"去重清单到文件
blank_list = sorted(blank_but_nonempty)
with open(BLANK_FILTERED_PATH, "w", encoding="utf-8") as fh:
for t in blank_list:
fh.write(t + "\n")
print(f"\n空白过滤清单写入: {BLANK_FILTERED_PATH} ({len(blank_list)} 条去重文本)")
# 打印"被判空场但原文本非空"的去重清单
if blank_but_nonempty:
print("\n" + "=" * 60)
print("【被判空场但原文本非空】去重文本清单(请肉眼确认无真中文字幕)")
print("=" * 60)
for i, t in enumerate(blank_list, 1):
print(f" [{i}] {repr(t)}")
print(f"{len(blank_but_nonempty)} 条去重文本")
else:
print("\n'被判空场但原文本非空'的文本。")
print("\n阶段 B 完成。")
if __name__ == "__main__":
main()
@@ -0,0 +1 @@
C-17运输机|GPS模块|中段反导|中程防空|二冲程发动机|以色列国防部|伊斯兰革命卫队|低空搜索雷达|光学红外传感器|动能撞击|卡桑|塔米尔|复合诱饵欺骗|多弹头诱饵|大卫投石索|天基预警卫星|子弹头|巡航导弹|干扰弹|弹道导弹|强电磁干扰|惯性制导|投石索|拉斐尔公司|攻击无人机|无人机蜂群|末端拦截|本·古里安国际机场|机动变轨|极速弹头|标准-6|泥石|爱国者|爱国者-3|相控阵预警雷达|真主党|真实承诺4行动|短程防空|简易惯性制导|箭-2反导系统|箭-3反导系统|箭式|红外传感器|红外诱饵弹|萨德|蓝皓|见证者-136|诱饵弹|近程防空|远程反导|远程防空|铁穹|防空导弹|防空武器|陆基远程雷达|集成化指挥控制中心|集束弹头|霍拉姆沙赫尔|霍拉姆沙赫尔-4|非对称策略|飞毛腿|饱和攻击|驻韩国庆尚北道星州基地|高超音速