俄罗斯贵宾会-俄罗斯贵宾会官网
做最好的网站

【NumberValidators】增值税发票代码验证

增值税发票代码验证定义了两种验证结果
VATCodeValidationResult这是默认验证结果,其定义如下:

解放财务人员的双手,让更多的会计人员投入到企业的管理决策中去。是我们作为OCR厂商一直努力的方向。同时也希望更多的人可以了解到OCR。

            Console.WriteLine("***增值税发票***");
            var vat10Validator = new VATCode10Validator();
            var vat12Validator = new VATCode12Validator();
            Console.WriteLine("随机的增值税发票:" + vat10Validator.GenerateRandomNumber());
            Console.WriteLine("生成指定的增值税专用发票:" + vat10Validator.GenerateVATCode(3700, 2017, 1, Invoices.VATKind.Special));
            Console.WriteLine("生成指定的10位增值税普通发票:" + vat10Validator.GenerateVATCode(1100, 2017, 2, Invoices.VATKind.Plain));
            Console.WriteLine("生成指定的12位增值税普通发票:" + vat12Validator.GenerateVATCode(1100, 2018, 6, Invoices.VATKind.Plain));
            Console.WriteLine("随机的增值税电子/卷票/普票:" + vat12Validator.GenerateRandomNumber());
            string[] vatArr = { "031001600311", "3100153130", "011001800304" };
            foreach (var vat in vatArr)
            {
                var valid = VATCodeValidatorHelper.Validate(vat, minYear: 2012);
                Console.WriteLine("{0}验证结果:{1} 类型{2} 行政区划名称({3}) 验证结果类型:{4}", vat, valid.IsValid, valid.Category, valid.AreaName, valid);
            }
    /// <summary>
    /// 增值税发票和普通(纸质)专有的验证结果
    /// </summary>
    public class VATCode10ValidationResult : VATCodeValidationResult
    {
        /// <summary>
        /// 发票金额版本号,仅10位长度发票才有
        /// </summary>
        public AmountVersion AmountVersion { get; internal set; }
    }

人工智能的号角已经吹响,而发票OCR识别,作为AI的一个分支,以前或许没有被大家重视,相信在未来几年的发展中,技术的整合将会越来越快。而OCR也一定会发挥巨大的作用。

    /// <summary>
    /// 增值税发票代码验证结果
    /// </summary>
    public class VATCodeValidationResult : ValidationResult
    {
        /// <summary>
        /// 行政区划代码
        /// </summary>
        public int AreaNumber { get; internal set; }
        /// <summary>
        /// 行政区域名称
        /// </summary>
        public string AreaName { get; internal set; }
        /// <summary>
        /// 发票类型
        /// </summary>
        public VATKind? Category { get; internal set; }
        /// <summary>
        /// 印刷年份
        /// </summary>
        public int Year { get; internal set; }
        /// <summary>
        /// 印刷批次
        /// </summary>
        public int Batch { get; internal set; }
        /// <summary>
        /// 发票联次,仅10位长度和12位长度折叠票发票才有
        /// </summary>
        public int DuplicateNumber { get; internal set; }
    }

由于财务人员的信息化一般靠公司内部的IT部门来推进,相对而言比较闭塞。很多时候市面上已经有非常成熟的解决方案,而财务人员往往一无所知,继续埋头苦干。就拿增值税发票来说,在企业的往来业务中,占比非常的大,制造业或者物流等公司每个月收到的供应商发票基本都是万级以上。如此多的发票全靠人力录入,核验,可以想象是多么巨大的一个工程。

  • VATCode10Validator 对应长度为10的发票代码,包含增值税专用发票、增值税普通发票
  • VATCode12Validator 对应长度为12的发票代码,包含增值税普通发票、增值税普通发票(卷票)、增值税电子普通发票
  • VATCodeValidatorHelper 为静态类,用于辅助验证,其内部简单的封装了按发票代码长度调用对应的IVATCodeValidator实现

奥普快票通发票扫描识别系统演示视频

PS:目前1.0版本中VATCode12Validator未支持12位的增值税普通发票,如果需要支持,需从git上下载代码后自行生成dll

增值税专用发票、增值税普通发票、增值税电子普通发票。对于日常生活中常见的这几种票据,财务人员每个月都会收到大量的单据,财务人员无论是报税,还是费控,都需要对企业发生的票据进行人工的录入和审核。经常可以看到财务人员望着一叠一叠的发票唉声叹气。因为全靠一双手和一双眼睛来录入发票上密密麻麻的信息,简直是累上加累。最关键的是这种重复而又机械性的工作没有对财务工作质量有半点的提升。

目前IVATCodeValidator包含VATCode10Validator以及VATCode12Validator两种具体实现

发票扫描OCR识别技术,早在二十年前就有雏形了,当时都是基于图片的文字检测,并没有专业的发票识别产品。后来随着税局的不断规范和改革,基本形成了现在大家看到的通用型增值税发票,同时也让OCR识别厂家可以针对性的做发票识别的研究。

        /// <summary>
        /// 发票代码为空
        /// </summary>
        public const string Empty = "发票代码为空";
        /// <summary>
        /// 错误的发票代码
        /// </summary>
        public const string Error = "错误的发票代码";
        /// <summary>
        /// 发票年份超出允许的年份范围
        /// </summary>
        public const string YearOutOfRange = "发票年份超出允许的年份范围{0} ~ {1}";
        /// <summary>
        /// 发票发行区域识别失败
        /// </summary>
        public const string InvalidArea = "发票发行区域识别失败";
        /// <summary>
        /// 无效的发票类别
        /// </summary>
        public const string InvalidKind = "无效的发票类别";
        /// <summary>
        /// 发票类别错误,无法生成发票代码
        /// </summary>
        public const string GenerateWrongKind = "发票类别错误,无法生成发票代码";
        /// <summary>
        /// 无效实现
        /// </summary>
        public const string InvalidImplement = "未能找到或无效的 {0} 位发票代码实现";
        /// <summary>
        /// 长度不符
        /// </summary>
        public const string LengthOutOfRange = "发票代码非 {0} 位";

与此同时,奥普快票通发票扫描识别系统还提供了可以做二次开发集成的SDK开发包。支持和不同财务ERP、企业OA等业务系统无缝的对接。真正实现财务工作的一站式解决方案。无论是本地DLL&LIB调用,还是支持多浏览器的Websocket调用。已经和很多大小的行业系统进行了对接。

本文由俄罗斯贵宾会发布于编程,转载请注明出处:【NumberValidators】增值税发票代码验证

您可能还会对下面的文章感兴趣: