You need to enable JavaScript to run this app. 基于Visions自定义类型实现证券标识符列的自动识别与校验
优惠活动
大模型
产品
解决方案
定价
更多

基于Visions自定义类型实现证券标识符列的自动识别与校验

基于Visions实现证券标识符识别校验的实操方案

你的实现思路完全贴合Visions的设计逻辑——既然原生已经实现了带校验位的ISBN识别场景,同属“固定长度+字符集约束+末尾校验位”逻辑的ISIN、SEDOL、CUSIP三类证券标识符,完全不需要改动Visions的底层识别引擎,只要对齐ISBN的自定义类型范式做扩展,就能覆盖你提到的两类需求。

核心实现路径

1. 为三类证券标识符自定义对应Visions数据类型

所有带校验位的字符串类标识符,自定义的逻辑和ISBN类型的结构完全一致,只需要给每个类型绑定两个维度的判断规则即可:

  • 前置硬过滤规则:快速排除明显不匹配的样本,减少校验位计算的性能损耗
    • ISIN:固定12位长度,前2位为大写字母组成的国家/地区码,剩余9位为数字+大写字母组合,末位为校验位
    • SEDOL:固定7位长度,由大写字母、数字混合组成,内容不包含元音字符,末位为校验位
    • CUSIP:固定9位长度,前6位为发行方识别码、后续2位为标的识别码,末位为校验位
  • 专属校验位计算函数:严格遵循每类标识符的官方加权校验算法,这部分逻辑和ISBN的校验位计算在Visions里的作用完全等价

你可以参考如下的自定义类型结构完成代码实现:

from visions import VisionsTypeset, String

# 示例:定义ISIN类型,继承基础字符串类型
class ISIN(String):
    @staticmethod
    def get_relations():
        # 绑定ISIN类型的序列判断规则
        return [ISIN.match_isin_format]
    
    @staticmethod
    def match_isin_format(series):
        # 1. 先快速过滤长度不符合要求的样本
        # 2. 校验字符集合规性
        # 3. 逐行计算校验位匹配结果
        ...

按同样的逻辑完成SEDOL、CUSIP的类型定义后,把三个自定义类型打包成专属的证券标识符类型集,就可以接入Visions的原生流程了。

2. 覆盖“非100%匹配的未知列识别”需求

这个需求不需要额外写定制逻辑,直接用Visions原生的采样识别能力调整阈值即可:

  • 跳过“必须整列100%元素匹配才算对应类型”的硬约束,调整识别流程里的序列采样占比参数,比如设置为0.8,当列中80%的元素符合某类证券标识符的规则时,即可将该列归类为对应类型
  • 识别时直接传入你自定义的证券标识符专属类型集,避免内置的通用字符串、数值类型和自定义类型的判断冲突

3. 覆盖“已知目标类型的合规性校验”需求

这类场景直接复用Visions原生的类型强制转换校验能力即可:

  • 明确指定待校验列的目标类型(比如“当前列预期为全量CUSIP编码”)
  • 系统会自动逐行执行你之前绑定的校验规则,定位出不符合校验逻辑的异常行,不会默认将不匹配的样本强行转换为目标类型

实操注意事项

  • 三类标识符的判断逻辑要把长度校验放在最前置的过滤环节,避免因为字符集规则的重叠导致ISIN、CUSIP的识别混淆
  • 实现校验位计算时,不要遗漏大写字母到数值的映射规则(即A=10、B=11……Z=35的映射关系),这是最容易导致校验结果出错的细节

内容的提问来源于stack exchange,提问作者Michael S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 08:36:04