当前位置: 首页 > news >正文

百度OCR调用记录

根据说明,调用测试

设置注册的API Key和Secret Key

调用类(官方文档中有)

这里改传入路径;

测试问题

1.{"error_code":110,"error_msg":"Access token invalid or no longer valid"}

查到说是

原来第一步取AccessToken方法,有误区,返回的result是一个集合,AccessToken是其中一项。。。

需要转化后获取(弱水三千,TMD只取一瓢):

自建类库,参考
public class AccessTokenInfo
{
    public string refresh_token { get; set; }
    public string expires_in { get; set; }
    public string session_key { get; set; }
    public string access_token { get; set; }
    public string scope { get; set; }
    public string session_secret { get; set; }
}

2.按照之前的类传入PDF不识别

{"log_id":1901887988395845459,"error_msg":"image format error","error_code":216201}

原因:给的示例只支持image,PDF需要自己调整:

至此调用成功

3.解析字符串

自建类库
   
    public class OcrData
    {
        public string log_id { get; set; }
        public string pdf_file_size { get; set; }
        public string words_result_num { get; set; }
        public InvoiceData words_result { get; set; }
        
    }
    public class InvoiceData
    {
        /// <summary>
        /// 发票类型-电子发票(普通发票)
        /// </summary>
        public string InvoiceTypeOrg { get; set; }
        /// <summary>
        /// 发票号
        /// </summary>
        public string InvoiceNum { get; set; }
        /// <summary>
        /// 发票日期
        /// </summary>
        public string InvoiceDate { get; set; }
        /// <summary>
        /// 购买方抬头
        /// </summary>
        public string PurchaserName { get; set; }
        /// <summary>
        /// 购买方统一社会信用代码/纳税人识别号
        /// </summary>
        public string PurchaserRegisterNum { get; set; }
        /// <summary>
        /// 销售方抬头
        /// </summary>
        public string SellerName { get; set; }
        /// <summary>
        /// 销售方统一社会信用代码/纳税人识别号
        /// </summary>
        public string SellerRegisterNum { get; set; }
        /// <summary>
        /// 价税合计(小写)
        /// </summary>
        public string AmountInFiguers { get; set; }
        /// <summary>
        /// 税额-列表
        /// </summary>
        public List<CommodityData> CommodityTaxRate { get; set; }
        /// <summary>
        /// 税额-列表
        /// </summary>
        public List<CommodityData> CommodityTax { get; set; }
        /// <summary>
        /// 税额合计
        /// </summary>
        public string TotalTax { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        public string Remarks { get; set; }
        /// <summary>
        /// 开票人
        /// </summary>
        public string NoteDrawer { get; set; }
        /// <summary>
        /// 合计
        /// </summary>
        public string TotalAmount { get; set; }
    }
    public class CommodityData
    {
        public string row { get; set; }
        public string word { get; set; }
    } 

4.一个pdf多张发票问题

没查到可以一次读取多个的接口,笨办法就是分割成多个pdf,然后分别读取,下面是PDF分割的方法

 string inputPdfPath = "path/to/your/input.pdf";
        string outputDir = "path/to/output/directory";

        // 确保输出目录存在
        Directory.CreateDirectory(outputDir);

        using (PdfReader reader = new PdfReader(inputPdfPath))
        {
            using (PdfDocument pdfDoc = new PdfDocument(reader))
            {
                int numberOfPages = pdfDoc.GetNumberOfPages();

                // 遍历每一页
                for (int i = 1; i <= numberOfPages; i++)
                {
                    // 创建新文件的路径
                    string outputPath = Path.Combine(outputDir, $"page_{i}.pdf");

                    // 创建一个新的PDF文档,只包含当前页
                    PdfDocument singlePageDoc = new PdfDocument(new PdfWriter(outputPath));
                    pdfDoc.CopyPagesTo(i, i, singlePageDoc);
                    singlePageDoc.Close();

                    ---这里读取就好了
                }
            }
        }

http://www.dtcms.com/a/76485.html

相关文章:

  • 荣耀手机怎么录制屏幕?屏幕录制后为视频加水印更有“安全感”
  • 复习JVM
  • STM32之快乐的Event Recorder功能
  • Docker 部署RabbitMQ
  • MySQL日期转字符串,字符串转日期的函数
  • GraphDPI:通过互信息最大化进行图表示学习来消除部分标签歧义
  • SpringBoot之如何集成SpringDoc最详细文档
  • java之IP 工具类
  • MySQL事务介绍
  • Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传
  • 通过NodeRED三步完成数据上报|AIoTedge最佳实践
  • MyBatis XMLMapperBuilder 是如何将 SQL 语句解析成可执行的对象? 如何将结果映射规则解析成对应的处理器?
  • vue3中用v-for循环出三个元素,绑定元素的ref并拿到这三个元素的ref属性
  • YOLO11结构
  • 深度学习框架PyTorch——从入门到精通(2)张量
  • 项目中pnpm版本和全局pnpm版本不一致
  • Vue:Vue2和Vue3创建项目的几种常用方式以及区别
  • Canary
  • 小程序API —— 52 小程序界面交互 - 模态对话框 - 消息对话框
  • 15 文件操作
  • 【初学者】解释器和脚本各是什么?有什么区别与联系?
  • Agent系列——Agent框架调研
  • 再学:函数可见性、特殊函数、修饰符
  • Python IP解析器 ip2region使用
  • Hessian矩阵详解与应用
  • VBA常见的知识都有哪些,让AI编写的VBA经常 报错,所以VBA的基础还是要学习的
  • Java 代理模式详解
  • 嵌入式GPRS协议面试题及参考答案
  • 自动驾驶背后的数学:特征提取中的线性变换与非线性激活
  • GenICam GenTL 标准 ver1.5(1)GenICam简介与框架