精华内容
下载资源
问答
  • 银行卡一类二类户三类户

    千次阅读 2019-04-18 20:36:00
    户是全功能账户,是我们熟知的借记,可以办理存款、转账、消费缴费、购买投资理财产品、支取现金等,使用范围和金额不受限制。个人的工资收入、大额转账、银证转账,以及缴纳和支付医疗保险、社会保险、养老金...
    1. Ⅰ类户是全功能账户,是我们熟知的借记卡,可以办理存款、转账、消费缴费、购买投资理财产品、支取现金等,使用范围和金额不受限制。个人的工资收入、大额转账、银证转账,以及缴纳和支付医疗保险、社会保险、养老金、公积金等业务应当通过I类户办理。

    2. Ⅱ类户可以办理存款、购买投资理财产品等金融产品、限额消费和缴费、限额向非绑定账户转出资金业务。经银行柜面、自助设备加以银行工作人员现场面对面确认身份的,Ⅱ类户还可以办理存取现金、非绑定账户资金转入业务,可以配发银行卡实体卡片。其中,Ⅱ类户非绑定账户转入资金、存入现金日累计限额合计为1万元,年累计限额合计为20万元;消费和缴费、向非绑定账户转出资金、取出现金日累计限额合计为1万元,年累计限额合计为20万元。

    3. Ⅲ类户可以办理限额消费和缴费、限额向非绑定账户转出资金业务。经银行柜面、自助设备加以银行工作人员现场面对面确认身份的,Ⅲ类户还可以办理非绑定账户资金转入业务。其中,Ⅲ类户账户余额不得超过1000元;非绑定账户资金转入日累计限额为5000元,年累计限额为10万元;消费和缴费支付、向非绑定账户转出资金日累计限额合计为5000元,年累计限额合计为10万元。

    4. 一类户有实体卡,二类户三类户没有只能通过绑定实体卡来创建

    转载于:https://www.cnblogs.com/h-c-g/p/10732172.html

    展开全文
  • 银行一类户和二类户的区别有些什么? 首先我们可以从一类户来看,银行规定,一个人在同一家银行有且仅有一个一类户,而对于二类户来说则没有具体的限制。一下是对一类户和二类户具体区别做出解释: 1、功能 一类账户...

    银行一类户和二类户的区别有些什么?

    首先我们可以从一类户来看,银行规定,一个人在同一家银行有且仅有一个一类户,而对于二类户来说则没有具体的限制。一下是对一类户和二类户具体区别做出解释:

    1、功能

    一类账户可以办理存款、转账、消费缴费、购买投资理财产品、支取现金等业务。

    二类账户可以办理存款、购买投资理财产品等金融产品,但不能存取现金、也不能向非绑定账户转账。

    2、限额

    一类账户使用范围和金额不受限制,而二类账户单日支付限额为1万元。

    3、可办理账户多少

    一类账户只能办理一个账户,而二类账户可以办理多个账户。

    4、有无实体卡

    一类账户有实体卡,而二类账户没有实体卡。

    5、开户渠道

    一类账户可通过柜面,远程视频柜员机和智能柜员机等自助机具(需要经过商业银行工作人员现场核验身份信息)开立。

    二类账户可通过自助机具(不需要商业银行工作人员现场核验身份信息)、网上银行和手机银行等电子渠道开立。

    以上就是两者之间的大致区别,那么对普通人有什么影响呢?从区别中可以看出,一类银行卡比二类银行卡使用环境更多、更方便。

    其他

    根据规定,每个人在每个银行只能办理4张储蓄卡,4张储蓄卡中只能开一个一类账户,其他三张只能办理二类或三类账户,也就是说,我们到银行办理二类账户,最多只能办理3个。

    从上面几个区别中,我们可以大致知道,一类账户的银行卡比二类账户的银行卡要更方便实用,因此,如果你想重办一张银行卡,且不想用之前的银行卡,那么你就需要把之前的先注销掉哦,不然你重办的就是属于二类账户了!

    展开全文
  • Linux下多网卡绑定bonding bond6

    万次阅读 2017-12-03 02:21:56
    、bond简介: 1.什么是bonding?  Linux bonding 驱动提供了个将多个物理网络端口捆绑为单个逻辑网络端口的方法,用于网络负载均衡、冗余和提升网络的性能,比如对于备份服务器,需要在个晚上备份几个T的数据...

    一、bond简介:

    1.什么是bonding?

         Linux bonding 驱动提供了一个将多个物理网络端口捆绑为单个逻辑网络端口的方法,用于网络负载均衡、冗余和提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据,如果使用单个的千兆网口将会是很严重的瓶颈。其它的应用,比如ftp服务器,高负载的下载网站, 都有类似的问题。因此使用bond或Linux teaming来绑定多个网卡作为一个逻辑网口,配置单个的IP地址,会大幅提升服务器的网络吞吐(I/O)。
        Linux的多网卡绑定功能使用的是内核中的"bonding"模块,关于此模块可以参考Linux Ethernet Bonding Driver文档, 但是目前发布各个Linux版本内核均已包含了此模块,大多数情况下不需要重新编译内核。 Linux 的 bonding 驱动提供了绑定/集成(bond)多个网卡为一个虚拟逻辑网口的功能。并请注意绑定的网口(bonded)有多种工作模式; 一般来说,分为 热后备(hot standby) 和 负载均衡(load balancing). 在Redhat/Fedora和其它类Redhat Linux中是比较容易配置的。
        目前网卡绑定mode共有七种(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6。

    2、二、bond的七种模式介绍:

    1、mode=0(balance-rr)(平衡抡循环策略)
    链路负载均衡,增加带宽,支持容错,一条链路故障会自动切换正常链路。交换机需要配置聚合口,思科叫port channel。
    特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接
    或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

    2、mode=1(active-backup)(主-备份策略)
    这个是主备模式,只有一块网卡是active,另一块是备用的standby,所有流量都在active链路上处理,交换机配置的是捆绑的话将不能工作,因为交换机往两块网卡发包,有一半包是丢弃的。
    特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。
    此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

    3、mode=2(balance-xor)(平衡策略)
    表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy,需要交换机配置port channel)
    特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

    4、mode=3(broadcast)(广播策略)
    表示所有包从所有网络接口发出,这个不均衡,只有冗余机制,但过于浪费资源。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。需要和交换机的聚合强制不协商方式配合。
    特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

    5、mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合)
    表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy).标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽。
    特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
    外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,
    尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。
    必要条件:
    条件1:ethtool支持获取每个slave的速率和双工设定
    条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
    条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

    6、mode=5(balance-tlb)(适配器传输负载均衡)
    是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。该模式要求slave接口的网络设备驱动有某种ethtool支持;而且ARP监控不可用。
    特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
    必要条件:
    ethtool支持获取每个slave的速率

    7、mode=6(balance-alb)(适配器适应性负载均衡)
    在5的tlb基础上增加了rlb(接收负载均衡receive load balance).不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的.
    特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
    来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达 时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。
    使用ARP协商进行负载均衡的一个问题是:每次广播 ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。
    当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
    当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答 不会被switch(交换机)阻截。
    必要条件:
    条件1:ethtool支持获取每个slave的速率;
    条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管
    其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量。


    常用的有三种模式
    mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。
    mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。
    mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。
    需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里options bond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode 0下):mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.(实测中mode0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

    mode5和mode6不需要交换机端的设置,网卡能自动聚合,因为做bonding的这两块网卡是使用不同的MAC地址。mode4需要支持802.3ad。mode0,mode2和mode3理论上需要静态聚合方式。

    三、实操部分

        1、查看bond模块:
             modprobe -l bond*        或者     modinfo bonding
         2、查看所有网卡:
           [master@uni-cloud ~]$ lspci | grep net
           00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 05)
           05:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

       建议关闭NetworkManager:
        $chkconfig NetworkManager off
        $service NetworkManager stop

      3、配置网卡信息:

    [master@uni-cloud ~]$ cat /etc/sysconfig/network-scripts/ifcfg-bond0 
    DEVICE=bond0
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=none
    IPADDR=101.36.***.***
    NETMASK=255.255.255.***
    GATEWAY=101.36.***.***
    DNS1=114.114.114.114
    IPV6INIT=no
    USERCTL=no
             
    [master@uni-cloud ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    HWADDR=0c:c4:7a:06:04:49
    TYPE=Ethernet
    UUID=14b9c03b-ade6-481f-8ee8-fc881bcd28a4
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=none
    IPV6INIT=no
    USERCTL=no
    MASTER=bond0
    SLAVE=yes
        
    [master@uni-cloud ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    HWADDR=0C:C4:7A:06:04:48
    TYPE=Ethernet
    UUID=d094c5e4-8e55-4465-b4e0-6c3a011f3d29
    ONBOOT=no
    NM_CONTROLLED=no
    BOOTPROTO=none
    IPV6INIT=no
    USERCTL=no
    MASTER=bond0
    SLAVE=yes

    4、修改modprobe相关设定文件,并加载bonding模块
    [master@uni-cloud ~]$ cat /etc/modprobe.d/bonding.conf 
    alias bond0 bonding
    options bonding  miimon=100 mode=6

    卸载和重新加载bonding模块,重启网络服务:
    modprobe -r bonding                                      #bonding已经载入的情况下重新载入需要“-r”选项,比如更换了模式等配置文件内容 (bonding.conf文件里)则需要通过此命令使新 modprobe  bonding                                        的设置生效。
    service network restart

    查看bonding模块状态:
    [mailmaster@uni-cloud ~]$ lsmod | grep bonding
    bonding               128245  0 

    5、确认bonding模式和状态:

    [master@uni-cloud ~]$ cat /proc/net/bonding/bond0 
    Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

    Bonding Mode: adaptive load balancing
    Primary Slave: None
    Currently Active Slave: eth0
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0

    Slave Interface: eth0
    MII Status: up
    Speed: 10 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 0c:c4:7a:06:04:49
    Slave queue ID: 0

    Slave Interface: eth1
    MII Status: up
    Speed: 10 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 0c:c4:7a:06:04:48
    Slave queue ID: 0

    [master@uni-cloud ~]$ ifconfig | grep HWaddr
    bond0     Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
    eth0      Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
    eth1      Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:48  
              inet6 addr: ::1/128 Scope:Host
    virbr0    Link encap:Ethernet  HWaddr 52:54:00:56:F3:F3  

    [root@master]# ifdown eth0

    [root@master]# ifconfig | grep H
    bond0     Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
    eth1      Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
              inet6 addr: ::1/128 Scope:Host
    virbr0    Link encap:Ethernet  HWaddr 52:54:00:56:F3:F3  
        #模式6下bond0会使用eth0或eth1其中某一个网卡的mac地址,如果此mac地址对应的物理网卡down了,则存活的某一网卡继承此mac地址(这mac地址是虚拟出来的,设备实际的mac地址是唯一且不变的),当然bond0 mac地址也是此值;此外mode0模式下查看会发现bond将所有的网卡mac地址虚拟成相同的mac地址,内容如下:


    bond0     Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
    eth0      Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
    eth1      Link encap:Ethernet  HWaddr 0C:C4:7A:06:04:49  
    virbr0    Link encap:Ethernet  HWaddr 52:54:00:56:F3:F3  


    6、另外如果eth0和eth1没写MASTER和SLAVE,则需要增加开机启动脚本如下:
    在 /etc/rc.d/rc.local里加上
    ifenslave bond0 eth0 eth1


    除此之外如果需要查看网卡详细信息可使用 ethtool 工具。



    文章部分内容为编者摘自网络,如有侵权,请第一时间联系我!

    扩展连接1:http://blog.csdn.net/youlang2010/article/details/20462301
    扩展连接2:http://blog.csdn.net/wuweilong/article/details/39720571
    扩张连接3:https://www.cnblogs.com/archoncap/p/6079915.html

    展开全文
  • 从上期的介绍中我们可以了解到使用专用的银行识别接口,几行代码就可以完成银行卡卡号的识别,那么有的小伙伴可能会问,我想识别的卡不是银行,会员可以识别吗,或者某一类证件号识别?也没有问题~但因为不同...

    前言

      华为HMS MLKit提供的服务越来越多了,上期给大家介绍了银行卡识别的功能,从上期的介绍中我们可以了解到使用专用的银行卡识别接口,几行代码就可以完成银行卡卡号的识别,那么有的小伙伴可能会问,我想识别的卡不是银行卡,会员卡可以识别吗,或者某一类证件号识别?也没有问题~但因为不同商家的卡号位置,版面样式各异,所以无法像银行卡识别那样使用专用的银行卡识别API,这个时候我们可以选用通用卡证识别的能力,通用卡证识别可以给大家提供一个标准的通用卡证对准框,大家只需要拉起这个对准框,就可以获取对准框内识别到的卡证全部内容,这个时候再针对这些内容按照一定的规则做关键信息提取,即可获取到自己想要的内容,比如连续的8位数字即为卡号,或者在某些特殊字母后的内容即为卡号内容。

    通用卡证识别的应用场景

      通用卡证识别,顾名思义,是各种卡证的识别,能识别的范围很广,常用的应用场景:

    • 旅游绑证
      旅游类APP需要对身份证等信息进行绑定,用于购票、酒店预订等场景,通过对此类证件进行拍照自动识别,可以避免手动输入证件号容易出错的问题。

    在这里插入图片描述

    • 购物绑卡
      购物类APP,通过拍照识别快速绑定会员卡、购物卡、打折卡。

    在这里插入图片描述

    银行卡、中国二代身份证号码识别虽然可以也可以使用通用卡证识别来完成,但推荐使用华为ML Kit的专有的银行卡识别、身份证识别的API,专有卡证识别针对银行卡、身份证识别做了特别的优化,准确率更高,可以直接返回处理好以后的卡号数据,小编后续可以详细介绍下专有卡证和通用卡证识别的区别。

    如何使用通用卡证识别服务

    在这里插入图片描述
      给大家画了个简单的流程图,可以看到只需要把图片、拍照、视频流传给ML Kit,即可获取到对应的识别内容,针对识别内容做一定后处理即可提取出要识别的卡证号内容。

    集成通用卡证识别服务的关键流程

    在这里插入图片描述
      可以看到开发流程也非常的简单,只需要启动卡证识别Activity,获取Activity识别到的内容,然后对内容做简单后处理提取关键信息就可以完成代码开发了。

    核心提示,端侧能力全免费,全终端覆盖!非华为手机也可以使用

    开发实战

      本次的开发实战中实现了对港澳通行证、回乡证、香港居民身份证的处理,大家伙可参考实现。

    1 开发准备

    详细的准备步骤可以参考华为开发者联盟:
    https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4

    这里列举关键的开发步骤。

    1.1 在项目级gradle里添加华为maven仓

      打开AndroidStudio项目级build.gradle文件,增量添加如下maven地址:

    buildscript {
        repositories {        
            maven {url 'http://developer.huawei.com/repo/'}
        }    }allprojects {
        repositories {       
            maven { url 'http://developer.huawei.com/repo/'}
        }}
    

    1.2 在应用级的build.gradle里面加上SDK依赖

    dependencies{  
      // 引入基础SDK 
      implementation 'com.huawei.hms:ml-computer-vision-ocr:1.0.3.300' 
      // 引入拉丁语文字识别模型包 
      implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:1.0.3.300' 
      // 引入银行卡识别plugin包 
      implementation 'com.huawei.hms:ml-computer-card-gcr-plugin:1.0.3.300' }
    

      将以下语句添加到AndroidManifest.xml文件中:

    <manifest 
        ... 
        <meta-data              
            android:name="com.huawei.hms.ml.DEPENDENCY"   
            android:value= "ocr"/> 
        ... </manifest>
    

    1.3 配置混淆脚本

    按照官网操作指导来就行了:
    https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-configuringobfuscation-scripts-4

    1.4 在AndroidManifest.xml文件里面申请相机和存储权限

    都是些基本操作,废话也不多说,按照官网指导来操作:
    https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-assigning-permissions-4

    2 代码开发

    2.1 启动卡证识别

    @Override 
    public void onClick(View v) { 
        switch (v.getId()) { 
            // 相册图片检测按钮。 
            case R.id.detect_picture: 
                this.startLocalImageActivity(cardImage, null, callback); 
                break; 
            // 视频流检测按钮。 
            case R.id.detect_video: 
                this.startCaptureActivity(null, callback); 
                break; 
            // 拍照检测按钮。 
            case R.id.detect_take_photo: 
                this.startTakePhotoActivity(null, callback); 
                break; 
            default: 
                break; 
            } }
    

    视频流识别

    private void startCaptureActivity(Object object, MLGcrCapture.Callback callback) { 
        // 创建通用卡证识别配置器。 
        MLGcrCaptureConfig cardConfig = new MLGcrCaptureConfig.Factory().create(); 
        // 创建通用卡证识别界面配置器。 
        MLGcrCaptureUIConfig uiConfig = new MLGcrCaptureUIConfig.Factory()        
            // 设置扫描框颜色。 
            .setScanBoxCornerColor(Color.GREEN) 
            // 设置扫描框中的提示文字,建议少于30个字符。 
            .setTipText("Recognizing, align edges") 
            // 设置识别界面横竖屏,支持三种模式: 
            // MLGcrCaptureUIConfig.ORIENTATION_AUTO:自动模式,由物理感应器决定显示方向。 
            // MLGcrCaptureUIConfig.ORIENTATION_LANDSCAPE:横屏模式。 
            // MLGcrCaptureUIConfig.ORIENTATION_PORTRAIT:竖屏模式。 
            .setOrientation(MLGcrCaptureUIConfig.ORIENTATION_AUTO) 
            .create(); 
        // 方式一:根据自定义的卡证识别界面配置器,创建通用卡证识别处理器。 
        MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig, uiConfig); 
        // 方式二:使用默认界面,创建通用卡证识别处理器。 
        MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig); 
        // 绑定通用卡证识别处理器和处理结果回调函数。 
        ocrManager.capturePreview(this, object, callback); }
    

    拍照识别

    private void startTakePhotoActivity(Object object, MLGcrCapture.Callback callback) { 
        // 创建通用卡证识别配置器。 
        MLGcrCaptureConfig cardConfig = new MLGcrCaptureConfig.Factory().create(); 
        // 创建通用卡证识别界面配置器。 
        MLGcrCaptureUIConfig uiConfig = new MLGcrCaptureUIConfig.Factory() 
            // 设置扫描框颜色。 
            .setScanBoxCornerColor(Color.BLUE) 
            // 设置扫描框中的提示文字,建议少于30个字符。 
            .setTipText("Taking picture, align edges") 
            // 设置界面横竖屏,支持三种模式: 
            // MLGcrCaptureUIConfig.ORIENTATION_AUTO:自动模式,由物理感应器决定显示方向。 
            // MLGcrCaptureUIConfig.ORIENTATION_LANDSCAPE:横屏模式。 
            // MLGcrCaptureUIConfig.ORIENTATION_PORTRAIT:竖屏模式。 
            .setOrientation(MLGcrCaptureUIConfig.ORIENTATION_AUTO) 
            .create(); 
        // 方式一:根据自定义的卡证识别界面配置器,创建通用卡证识别处理器。 
        MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig, uiConfig); 
        // 方式二:使用默认界面,创建通用卡证识别处理器。 
        MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig); 
        // 绑定通用卡证识别处理器和处理结果回调函数。 
        ocrManager.capturePhoto(this, object, callback); }
    

    相册图片识别

    private void startLocalImageActivity(Bitmap bitmap, Object object, MLGcrCapture.Callback callback) { 
        // 创建通用卡证识别配置器。 
        MLGcrCaptureConfig config = new MLGcrCaptureConfig.Factory().create(); 
        MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(config); 
        // bitmap 为需要识别的Bitmap类型卡证图像,支持的图片格式包括:jpg/jpeg/png/bmp。 
        ocrManager.captureImage(bitmap, object, callback); }
    

    2.2 对识别后的内容做后处理,进行关键信息提取

      重载onResult, onCanceled, onFailure, onDenied四个方法;onResult表示返回了结果,MLGcrCaptureResult为卡证识别返回的结果,onCanceled 表示用户取消,onFailure 表示识别失败,onDenied 表示相机不可用等场景。

    private MLGcrCapture.Callback callback = new MLGcrCapture.Callback() {
            @Override
            public int onResult(MLGcrCaptureResult result, Object object) {
                Log.i(TAG, "callback onRecSuccess");
                if (result == null) {
                    Log.e(TAG, "callback onRecSuccess result is null");
                    return MLGcrCaptureResult.CAPTURE_CONTINUE;
                }
    
                GeneralCardProcessor idCard = null;
                GeneralCardResult cardResult = null;
                /*港澳台通行证处理*/            
                if (cardTypeEnum == CardType.PASSCARD) {
                    idCard = new PassCardProcessor(result.text);
                /*香港身份证处理*/
                } else if (cardTypeEnum == CardType.HKIDCARD) {
                    idCard = new HKIdCardProcessor(result.text);
                /*回乡证处理*/
                } else if (cardTypeEnum == CardType.COMEHOMECARD) {
                    idCard = new HomeCardProcessor(result.text);
                }
                if (idCard != null) {
                    /*获取处理后的结果*/
                    cardResult = idCard.getResult();
                }
    
                showFrontImage(result.cardBitmap);
                displayResult(cardResult);
    
                // If the results don't match
                if (cardResult == null || cardResult.valid.isEmpty() || cardResult.number.isEmpty()) {
                    return MLGcrCaptureResult.CAPTURE_CONTINUE;
                }
    
                displayResult(cardResult);
                return MLGcrCaptureResult.CAPTURE_STOP;
            }       
        };}   
    };
    

      具体的卡号提取处理逻辑可以通过重写GeneralCardProcessor 类中的getResult()方法来完成,以港澳台通行证举例,更加详细的处理可以看github上的源码:

    public class PassCardProcessor implements GeneralCardProcessor {
        private static final String TAG = "PassCardProcessor";
    
        private final MLText text;
    
        public PassCardProcessor(MLText text) {
            this.text = text;
        }
        @Override
        public GeneralCardResult getResult() {
            List<MLText.Block> blocks = text.getBlocks();
            if (blocks.isEmpty()) {
                Log.i(TAG, "Result blocks is empty");
                return null;
            }
            ArrayList<BlockItem> originItems = getOriginItems(blocks);
            String valid = "";
            String number = "";
            boolean validFlag = false;
            boolean numberFlag = false;
            for (BlockItem item : originItems) {
                String tempStr = item.text;
                if (!validFlag) {
                    String result = tryGetValidDate(tempStr);
                    if (!result.isEmpty()) {
                        valid = result;
                        validFlag = true;
                    }
                }
                if (!numberFlag) {
                    String result = tryGetCardNumber(tempStr);
                    if (!result.isEmpty()) {
                        number = result;
                        numberFlag = true;
                    }
                }
            }        
            return new GeneralCardResult(valid, number);
        } }
    

    Demo 效果

    看下Demo效果如何,是不是还不错!
    在这里插入图片描述

    github 源码

    源码已经上传github,大家也可以在github上一起完善该功能。
    github源码地址:https://github.com/HMS-MLKit/HUAWEI-HMS-MLKit-Sample

    通用卡证识别demo代码路径:
    MLKit-Sample\module-text\src\main\java\com\mlkit\sample\activity\GeneralCardRecognitionActivity.java

    更详细的开发指南参考华为开发者联盟官网
    华为开发者联盟机器学习服务开发指南


    往期链接:Android | 教你如何在安卓上实现二代身份证识别,一键实名认证
    内容来源:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201226181206630022&fid=18
    原作者:AI_talking

    展开全文
  • 前言 前面给大家介绍了: 用华为HMS MLKit SDK 三十分钟在安卓上开发个微笑抓拍神器 安卓开发实战,用华为HMS MLKit 图像分割 SDK开发...本次隆重给大家介绍下华为新推出的银行卡识别SDK,一键实现银行卡绑定功能...
  • Linux IP别名和多网卡绑定

    千次阅读 2012-11-22 23:18:23
     一张物理网卡上配置多个IP,实现类似子接口之的功能,称为IP别名  在linux作DHCP服务器向多网段分配不同IP或者linux作路由器等时可能需要在个物理接口上配置多个IP地址    ⑴ step_1  redhat缺省使用...
  • 银行 账户

    千次阅读 2020-01-04 15:38:57
    一类户是全功能账户,是我们熟知的借记,可以办理存款、转账、消费缴费、购买投资理财产品、支取现金等,使用范围和金额不受限制。个人的工资收入、大额转账、银证转账,以及缴纳和支付医疗保险、社会保险、养老...
  • 1、问:“虚IP:eth0:1 这一类”和“在现有的IP里增加了一个IP地址,也就是多ip,ipadd1=....” 这两种说法是一回事吗? 答:本质是一样的吧,不过第一种比较规范,多网卡的时候格式更统一,可以通过冒号前面的...
  • 不管怎么说,我觉得这块虚拟网卡是那种可以让人眼前亮的东西,小巧,简单,用它可以做很多比较复杂的事情。   也因此,我曾经几乎没有关注过它的性能。随它去吧,毕竟就这么个小东西,怎么指望它能匹敌那些个...
  • 对于数据库服务器这样的应用来说,把磁盘控制器绑到个 CPU、把网卡绑定到另个 CPU 将会提高数据库的响应时间、优化性能。合理的根据自己的生产环境和应用的特点来平衡 IRQ 中断有助于提高系统的整体吞吐能力和...
  • 临时增加IP命令:ifconfig eth0:1 ip地址 netmask 子网码 broadcast 广播地址 gateway 网关   ifconfig eth0:1 10.1.104.65 netmask 255.255.255.0 broadcast...说明:eth0是第个网卡,其他依次为eth1,eth*,eth0
  • UE4发报机-关卡蓝图绑定事件到蓝图 通过发报机让关卡蓝图与蓝图事件交互
  • 细说2骗人的物联,满满的都是套路!如今,物联网的快速发展,物联网也跟着火爆起来,很多商家因此也都看好物联前景,纷纷加入到物联网市场,但是,其中也不乏一些骗局和套路,所以用户在购买时也需要注意...
  • 「数据分析真题日刷」系列第10篇 —— 招商银行信用中心2019秋招IT笔试(数据挖掘方向第批)
  • Android进阶封装之“史无前例”实现兼容Android 6.0权限、适配Android 拍照7.0: 相机与相册上传图片就用我好啦!、前言。 本篇博客从基本的AndroidN开始说怎么适配其拍照,其与7.0以下有何区别? 再详细...
  • 户开户风险和交易风险再讲

    千次阅读 2019-05-10 11:28:17
    这是基于段新闻的文摘来展开的,介绍了户的历史背景和来由,介绍了一二三户的作用和差别,也分析了作案步骤。但不研究不知道,研究后吓一跳,户的风险远不止于资金的盗用。还会被利用于洗钱、营销...
  • 个很不错的网页选项效果的源代码,经测试可用:经常看到人问选项或者类似选项的切换效果 这里封装了个js,希望对大家有用 所有代码都在下面了代码不多的,只有几k,如果压缩下还要小几k 前面有处漏了...
  • 手机拍照银行识别银行号的技术sdk  1、手机拍照银行识别银行号的...尤其是一些应用直接绑定银行,于是对于商业移动应用服务商来说,个人银行 账户识别成为了移动互联网时代新的需求。 手机拍照银行
  • Linux设备驱动子系统第弹 - SD

    千次阅读 2011-11-25 14:11:45
    1. 总论 2. 主控制器 3. 协议层 4. 块设备 ...MMC - MultiMedia CardSD - ...按存储大小,普通SD(2GB,按体积大小,普通SD,mini-SD,micro-SD(TF) 1.3 速度 默认模式: 12.5MB/s高速模式: 25MB/
  • 工作中遇到将绑定银行的需求,而且需要根据银行号显示开户行类型,并将银行号四位分隔,参考了下网上的栗子,并进行了融合优化,写出适合自己的代码 不多说,直接上代码,注释写的很清晰。 1、Activity逻辑...
  • 微信礼品

    千次阅读 2018-04-12 13:43:04
    礼品接口文档更新日期说明2016/11/15支持增删改查货架2016/12/7创建货架接口结构调整,增加了主题结构2016/12/14增加赠送礼品事件2016/12/21批量拉取接口由GET修改为POST方法2016/12/27新增兑换类型2017/1/5...
  • Android使用NFC模拟M实现 ()

    万次阅读 2018-12-14 10:54:46
    Android使用NFC模拟M实现 () Android使用NFC模拟M实现 (三) 在百度找遍,没有篇,讲的比较通俗易懂的文件。讲解Android 的NFC 功能card emulation。 略有点用的附在下面。 参考: 安卓 NFC ...
  • 微信JS-SDK实现微信会员功能(给用户微信卡包里发送会员) 需求:点击我们公司的微信公众号,从菜单栏中进入会员中心,如果是新会员则需绑定注册,注册完跳转到用户中心页面,然后给用户发会员,如果是老会员,...
  • 网卡性能调优

    千次阅读 2015-03-27 14:29:43
    大量小包的CPU密集型系统调优案例则 http://blog.netzhou.net/?p=181 我的blog前面有篇文章描述了软终端导致单cpu消耗100%,导致机器丢包跟延迟高的问题,文中我只是简单的说明了一下升级内核...
  • 学习WPF绑定

    千次阅读 2013-11-22 09:03:55
    数据绑定是指从个对象中提取信息,并在应用程序的用户界面中显示所提取的信息,而不用编写枯燥的代码就可以完成所有的工作。通常,富客户端使用双向的数据绑定,这种数据绑定提供了从用户界面向一些对象推出信息的...
  • 其实也没有增加新的管理,只是给TelephonyManager重载了几个sim信息获取接口,允许传入序号参数,比如传0表示获取第个卡槽的sim信息,传1表示获取第个卡槽的sim信息。 下面是新增的几个重载方法...
  • IC和ID以及两者的比较

    万次阅读 2018-12-06 20:14:41
    目录 IC ID  IC与ID的比较 IC ...IC (Integrated Circuit Card,集成电路),...它是将个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片形式。IC与读写器之间的通讯方式可以是接触式,也可...
  • 因为配置那里用的都是一些通用的配置,就是查询信号,设置服务器地址然后联网之的,使用自己和别人的手机都是可以联网成功的,但是有次拿到三张物联网后,我第次配置的时候是可以连上服务器的,数据收发OK...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,359
精华内容 23,343
关键字:

一类卡二类卡如何绑定