• [技术干货] 数学运算-科学计算器-科学计算器API接口介绍
    前言随着学习、科研与工程实践不断深入,基础四则运算工具已难以满足复杂计算需求。三角函数、对数指数、幂方开根、进制转换、阶乘、统计运算、方程求解等专业计算场景,都需要功能完备、逻辑严谨的科学计算器作为支撑。科学计算器区别于普通简易计算器,核心价值在于遵循标准数学运算优先级,兼容初等数学乃至大学基础理工学科常用运算规则,兼顾日常学习、考场演算、工程概算、数据统计等多元使用场景。它既是中小学生学习函数、几何的辅助工具,也是理工科学生、技术人员开展快速数值推演的便携计算载体。本科学计算器严格遵循通用数学运算规则,集成初等数学、基础理工科所需的各类运算功能,适用场景广泛:校园学习场景:初高中函数、几何计算,大学高等数学、物理、化学、工程力学习题演算;工程技术场景:建筑测绘、电气计算、机械参数概算、测量数据换算;科研实验场景:实验数据统计、误差估算、单位换算、批量数值处理;职业实务场景:金融测算、测绘勘察、设计概算、考证刷题;日常拓展场景:进制转换、几何估算、兴趣数理推演。API介绍请求说明名称类型必须说明numString是需要计算的参数、多个参数以逗号’,'分割(适用于需要多个参数计算的函数)operationString是divide:除,tan:正切,product:乘,arccos:反余弦,log:对数,sec:正割,cos:余弦,ln:自然对数,sech:双曲正割,percentage:百分比,absolute:绝对值,csch:双曲余割,square:幂次方,add:加,coth:双曲余切,sin:正弦,arccot:反余切,arccsc:反余割,cosh:双曲余弦,sinh:双曲正弦,cot:余切,tanh:双曲正切,arctan:反正切,subtraction:减,arcsin:反正弦,mod:求余,sqrt:开根,csc:余割,factorial:阶乘,exp:指数函数,arcsec:反正割,rec:倒数radOrAngString否弧度制(rad)或者角度制(ang)戳这里查看详情返回样例{ "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "484850497192233061798889",//本次请求号 "data": { "result": "113.0",//计算结果 "remark": "成功!" //计算结果说明 } }
  • [技术干货] 手机排名-百度排名-百度手机排名API接口介绍
    前言移动互联网时代,智能手机成为大众接入网络的首要载体,绝大多数用户依托手机开展信息检索、需求查询与内容浏览,百度移动搜索已然成为互联网自然流量的核心入口。海量潜在客户通过移动端搜索寻找信息、产品与服务,移动端流量也成为各类网站、线上项目不可或缺的流量来源。对于站点运营人员、SEO 优化从业者与网络营销团队而言,持续、精准地监控百度移动端关键词排名变动,掌握目标关键词排位走势,及时感知算法波动带来的影响,是开展优化诊断、策略调整、效果复盘不可或缺的数据基础。依托长期排名观测数据,运营者可以客观评估内容建设、移动端页面适配、站内结构优化、外部推广等工作成效,快速定位优化短板,挖掘流量增长机会,为整体线上运营决策提供可靠支撑。本百度移动排名查询工具,可批量采集关键词在百度移动端自然搜索位置,实时输出排名位次、目标页面、收录状态等关键信息,覆盖多元业务场景:SEO 优化运维:跟踪关键词排名波动,验证页面改版、内容更新、外链建设、移动端适配等优化措施效果;企业网络推广:监测行业核心词、品牌词、产品词排名,掌握竞品曝光态势,评估自然流量获客能力;站长与自媒体运营:监控文章、栏目页面搜索表现,筛选高潜力关键词,指导内容创作方向;营销服务商工作:为客户提供排名报表,量化优化成果,支撑项目复盘、方案调整;竞品数据分析:持续追踪竞争对手关键词布局与排名变化,发掘流量缺口,制定差异化优化策略。API介绍请求说明名称类型必须说明domainString是查询的域名keywordString是查询的关键词戳这里查看详情返回样例{ "code": 200, "msg": "成功", "data": { "Ranks": [ { "RankStr": "1-1",//排名(页数-条数) "XiongzhangID": "",//熊掌ID "Title": "",//标题 "Url": ""//标题连接 } } }
  • [互动交流] 对话情绪研判-会话情绪解析-交谈情绪识别-会话情绪判定API接口介绍
    前言用户在沟通过程中表达的不仅是具体诉求,文字背后往往还隐藏着满意、疑惑、焦虑、不满等不同情绪。对于企业而言,如果只能看到用户说了什么,却无法及时判断用户当前的情绪状态,就很容易错过服务干预的最佳时机。尤其是在客服、售后、在线咨询等场景中,一次未被及时发现的负面情绪,都可能进一步影响用户对产品和服务的评价。通过本接口可以分析用户日常沟通文本,自动判断当前会话中所表现出的情绪类别,并进一步细分情绪类型及置信度,帮助企业从“理解用户说什么”进一步升级到“识别用户怎么想”。特性智能情绪识别,自动分析用户沟通文本;多级情绪分类,精准识别一级、二级情绪;置信度评估,辅助判断识别结果;智能话术推荐,提供正负情绪回复参考;负面情绪预警,及时辅助人工介入,提升客服效率。API介绍请求说明名称类型必须说明textString是待识别文本,输入限制512字节sceneString否场景,default(默认项-不区分场景),talk(闲聊对话),task(任务型对话-如导航对话等),customer_service(客服对话-如电信/银行客服等)戳这里查看详情返回样例{ "code": 200,//返回code "msg": "成功",//code对应的说明描述 "taskNo": "051883630235426761387742",//本次请求号 "data": { "text": "本来今天高高兴兴",//输入的对话文本内容 "items": [ //分析结果数组 { "prob": 0.599796, // 情绪一级分类标签对应的概率 "replies": [ //参考回复话术,中性情绪下该项为空 "你的笑声真欢乐" ], "subitems": [ //二级分析结果数组 { "prob": 0.599796, //情绪二级分类标签对应的概率 "label": "happy" //情绪二级分类标签;客服模型正向(thankful感谢、happy愉快)、客服模型负向(complaining抱怨、angry愤怒);闲聊模型正向(like喜爱、happy愉快)、闲聊模型负向(angry愤怒、disgusting厌恶、fearful恐惧、sad悲伤) } ], "label": "optimistic"//情绪一级分类标签;pessimistic(负向情绪)、neutral(中性情绪)、optimistic(正向情绪) } ] } }
  • [互动交流] 新闻资讯查询-新闻信息查询-头条新闻查询API接口介绍
    前言可根据新闻主题、频道等维度查询实时新闻,查询结果包括:新闻标题、发布日期、频道、来源、新闻简要描述、新闻图片、新闻正文、新闻详情链接等信息。新闻查询可覆盖多个频道,包括:社会、财经、体育、娱乐、科技、教育、军事等。新闻查询可广泛运用在舆情分析能业务场景中。本服务包含新闻频道的查询及新闻信息列表查询,下面是新闻查询相关API。戳这里查看详情新闻频道查询用于查询新闻频道返回样例{ "code": 200,//详见code返回码说明 "msg": "成功",//code对应的描述 "taskNo": "526782409178028989145499",//本次唯一请求号 "data": { "totalCount": 49, "items": [ { "name": "国内焦点", //频道名称 "channelId": "5572a108b3cdc86cf39001cd" //频道id } ] } } 新闻信息查询用于查询新闻信息请求说明名称类型必须说明channelIdString否频道idchannelNameString否频道名称titleString否标题beginTimeString否发布时间起,使用格式yyyy-MM-dd HH:mm:ss,不传默认当日0点endTimeString否发布时间止,使用格式yyyy-MM-dd HH:mm:ss,不传默认当前时间pageString否页数,默认1,最大返回新闻条数为1万条pageSizeString否每页返回记录数,默认20返回样例{ "code": 200,//详见code返回码说明 "msg": "成功",//code对应的描述 "taskNo": "526782409178028989145499",//本次唯一请求号 "data": { "page": 1,//当前页 "pageSize": 100,//单页条数 "totalPage": 10,//总页数 "totalCount": 987,//总条数 "items": [ { "link": "https://www.163.com/dy/article/ISUOMDRF051482MP.html",//新闻详情链接 "channelId": "",//频道id "channelName": "国内焦点",//频道名称 "source": "网易新闻",//来源 "id": "",//新闻id "title": "",//新闻标题 "pubDate": "2024-03-10 20:54:00",//发布日期 "desc":"",//新闻简要描述 "nid":"",//新闻对应的外网id "imageurls":"",//图片列表 "content":"",//新闻正文,txt格式 "html":"",//新闻正文,html格式 } ] } }
  • [互动交流] SSL证书查询服务-SSL证书解析服务-SSL域名解析-SSL证书信息查询API接口介绍
    前言SSL证书解析可以根据网址,解析SSL的证书信息,包括:基本信息、签发者信息、序列号、有效起始日期、有效结束日期、签名算法、公钥信息、公钥算法、密钥用法、扩展密钥用法、基本约束、证书版本、证书签名等。支持解析证书链。SSL证书解析可用于定期检查网站 SSL 证书的有效性、网站安全性等。API介绍请求说明名称类型必须说明urlString是网址戳这里返回样例{ "code": 200,//详见code返回码说明 "msg": "成功",//code对应的描述 "taskNo": "986901198151630094255882",//本次唯一请求号 "data": { "count": 3, // 整个证书链的证书总数 "items": [ // 证书链,第一个为被检测的证书,最后一个为根证书 { "subjectCN": "*.jumdata.com", // 主题通用名称 "subjectO": "", // 主题组织,DV证书不返回 "subjectOU": "", // 主题组织单位,DV证书未必返回 "subjectC": "CN", // 主题国家,DV证书未必返回 "subjectST": "Zhejiang Province", // 主题省份,DV证书未必返回 "subjectL": "HangZhou", // 主题城市,DV证书未必返回 "issueC": "US", // 签发者国家 "issueCN": "RapidSSL TLS RSA CA G1", // 签发者通用名称 "issueO": "DigiCert Inc",// 签发者组织 "issueOU": "www.digicert.com", // 签发者组织单位称 "startTime": "2025-02-13 08:00:00", // 有效期开始 "endTime": "2026-02-01 07:59:59", // 有效期结束时间 "validityPeriod": "317天", // 有效期剩余时间 "status": "正常", // 证书状态:正常、过期、域名不匹配 "serialNumber": "0F D8 E6 5B E6 F3 0E F6 A4 04 60 D2 80 DB E1 46", // 序列号 "certificateType": "OV", // 证书类型 "version": 3, // 证书版本 "publicKeyAlgorithm": "RSA", // 公钥算法 "publicKeyExponent": 65537, // 公钥指数 "publicKeyLen": "2048", // 公钥长度 "publicKeyValue": "BE A4 7E C8 CD 62 D5 CB 48 73 9D 85 3A 64 A9 41 18 C3 69 75 F3 86 A4 C8 2D A3 B6 87 56 17 A7 B7 3B 24 B9 C5 50 1A CF 7C 2F 6C 9E 56 E7 83 BF A6 46 62 D9 38 E0 DC 94 28 69 33 75 04 68 72 74 65 63 54 08 27 34 5C 37 3E D8 ED F7 96 A9 AF 10 FC 29 C3 61 68 54 16 D1 68 C0 6B 8E C8 6C 3C 05 3C 93 7C 01 33 79 82 50 05 4B D2 63 39 41 C8 8D 2E EA 53 B7 39 10 15 C5 EA 8C 39 2F 40 79 4D 3B 44 0B 6D D7 5B 4F 52 D2 9E 9C 4C A5 83 A1 29 FD 90 54 7E AD 42 51 D8 3D 20 CA 79 B2 10 F8 06 07 73 D3 83 19 C6 E2 97 94 C5 4C C4 B8 68 43 EA 88 2C 36 59 73 C3 65 CF 14 6B D6 8B 86 9D 22 1E 1E C0 3D 8F 06 E6 7F 17 D3 3F C9 E5 1D 29 E6 AC A4 03 30 61 A7 AF 82 64 07 4C 74 72 2C 3E 69 18 7B B4 7A 0F 0F CC CC 06 6B 25 D6 94 68 38 CB FE 28 07 94 71 16 DB 15 61 DA F8 F2 76 4F 79 F5 F7 A5 E3", // 公钥信息 "keyUsage": "DigitalSignature,Key_Encipherment", // 密钥使用 "extendedKeyUsage": "serverAuth,clientAuth", // 扩展密钥使用 "sHA1Fingerprint": "0A BD 83 8E C9 85 46 B1 DF 59 BC 2C 70 A3 78 E8 D0 61 49 42", // 指纹sha1 "sHA256Fingerprint": "C6 62 55 FF DE 58 C8 A7 C1 31 56 1A 02 7D FE 34 3C 26 CD FE 7D 11 2D CF 7C 38 E4 84 10 50 9A E6", // 指纹sha256 "sans": [ "*.jumdata.com", "jumdata.com" ], // 主题备用名称 "signatureAlgorithm": "SHA256withRSA", // 签名算法 "signature": "1A 51 8F 65 D6 1F 9F 41 01 FA 81 40 B1 D9 14 22 A4 AB 8C 71 46 52 0B 91 F0 44 EF 6A 1B 04 6A 12 D1 45 A3 D5 E4 A5 A0 CB A3 BD 2E D8 EE 59 B4 51 60 69 EC 34 71 98 89 F0 31 E1 1E 1D 9B 76 1D ED 1F 5B EB FC DF 57 EA C2 FD AA E5 6A 90 CC 13 81 E0 22 D6 7E 53 75 D2 F4 22 FF B2 81 F4 8C BC 89 AC 20 CE 9B FD D1 1E 4F 90 57 76 C6 94 81 01 01 00 46 C7 7B 8E 6A 92 E1 93 08 2A 15 C9 8E 5A 33 BC 15 15 D5 77 C2 6B B4 D4 DC CA 8E A9 32 61 07 A6 4F 56 CC EB 8A 43 40 94 41 11 E0 52 CB 74 BF E2 F6 7F 6D 19 E2 C7 C9 34 BD 5E 54 20 63 89 F7 7C A1 BC 2D FD 96 66 17 58 29 39 A3 CD AB D5 9A 15 E4 0A 5C A8 5E 80 79 8D 8D AF B0 6A 29 06 7D B9 3F F9 5E 3D C4 0B 16 5A 6F 5E 7D A6 DD 50 17 57 27 55 29 FB 25 B3 6B 1A A5 0E ED 47 B1 54 55 AE 5B 91 E1 FE C0 66 C9 1A 34 F9 46 60 0D B8 AD", "basicConstraints": -1, // 基本约束 "subjectKeyIdentifier": "27 08 0B BE EE 28 00 A4 DB C1 93 6D 33 E4 4E EC '1 EE EF A9 4", // 主题密钥标识符 "authorityKeyIdentifier": "0C DB 6C 82 49 0F 4A 67 0A B8 14 EE 7A C4 48 52 88 EB 56 38", // 授权密钥标识符 "crlUrl": "http://cdp.rapidssl.com/RapidSSLTLSRSACAG1.crl", // CRL分发点 "caUrl": "http://cacerts.rapidssl.com/RapidSSLTLSRSACAG1.crt", // CA签发者 "ocspUrl": "http://status.rapidssl.com" // 在线证书状态协议 }, ... ] } }
  • [互动交流] DNS信息查询-域名DNS信息查询-DNS域名信息查询API接口介绍
    前言DNS域名信息查询,可查询域名的解析记录,包括:IPv4、IPv6、CNAME、TXT。解析记录种包含TTL数值(生存时间)。通过监测 TTL 值,应用程序可以在适当的时候重新进行 DNS 查询,以确保获取到最新的网络信息。核心用途DNS域名信息查询应用非常广泛,主要有:域名解析与网络访问可实现智能的网络连接和域名解析功能。可以根据获取到的 IP 地址选择最优的网络连接方式,或者在服务器地址发生变化时自动更新连接配置。网络故障排查与诊断当网络出现问题时,网络工程师或运维人员会使用 nslookup、dig 或 ping 等工具进行 DNS 查询,以定位问题。验证域名配置与记录类型DNS 不仅仅包含 A 记录(IPv4 地址),查询 DNS 可以获取多种关键配置信息:IPv4、IPv6、CNAME、TXTAPI介绍请求说明名称类型必须说明domainString是域名戳这里返回样例{ "code": 200,//详见code返回码说明 "msg": "成功",//code对应的描述 "taskNo": "012254029249104800787963",//本次唯一请求号 "data": { "arecords": [ //ip4地址记录 { "domain": "",// 域名 "name": "",//ipv4地址 "type": "A", //类型 "dclass": "IN", "ttl": 40 //ttl值 } ], "aaaaRecords": [ //ipv6地址记录 { "domain": "",//域名 "name": "",//ipv6地址 "type": "AAAA",//类型 "dclass": "IN", "ttl": 10 //ttl值 } ], "cnameRecords": [ //名域记录 { "domain": "",//域名 "name": "",//别名域 "type": "CNAME",//类型 "dclass": "IN", "ttl": 231 //ttl值 } ], "txtRecords": [ //txt记录 { "domain": "",// 域名 "name": "", // txt值 "type": "TXT", "dclass": "IN", "ttl": 600 } ] } }
  • [技术干货] 招标信息搜索-企业招投标信息查询-企业招标信息查询
    前言通过标题、采购人、供应商、省份、信息类型等维度查询招投标信息。返回项目预算、中标总金额、采购单位&代理机构、招投标阶段、行业分类等信息。通过查询,可以快速定位与自己业务匹配的项目,发现新的区域或行业市场,也以找到有实力的总包方或互补的合作伙伴,拓展自己的业务网络。API介绍请求说明名称类型必须说明keywordString是关键词,字符长度大于2,部分通用查询关键词做限制,如上海、科技等。searchModeString是搜索模式,1-精准搜索、2-模糊搜索pageSizeString否每页条数(默认10条,最大10条)pageIndexString否当前页数(默认第1页)publishStartTimeString否发布开始时间(yyyy-mm-dd格式:如2023-01-01),开始、结束时间间隔不能超过一年publishEndTimeString否发布结束时间(yyyy-mm-dd格式:如2023-02-01),开始、结束时间间隔不能超过一年announcementTypeString否招投标公告类型(默认不限制,单选):1-招标公告(预告、招标、澄清补遗、变更);2-招标结果(开标、中标成交、澄清答疑、变更、候选公示、废标流标终止、合同、验收)targetItemTypeString否招投标阶段(默认不限制,可以多选,通过英文逗号分隔):1-预告(招标公告);2-变更(招标公告);3-澄清补遗(招标公告);4-招标(招标公告);5-变更(招标结果);6-候选公示(招标结果);7-中标成交(招标结果);8-澄清答疑(招标结果);9-合同(招标结果);10-验收(招标结果);11-废标流标终止(招标结果);12-开标(招标结果)procurementMethodString否采购方式(默认不限制,单选):1-单一来源;2-框架协议;3-邀请招标;4-询价采购;5-竞争性谈判;6-竞争性磋商;7-竞价;8-公开招标projectRegionProvinceCodeString否项目区域-省份:使用行政区划代码projectRegionCityCodeString否项目区域-城市:使用行政区划代码searchTypeString否查找范围(默认不限制,可以多选,通过英文逗号分隔),支持如下维度的筛选:1-标题;2-项目编号;3-采购单位;4-代理机构;5-候选企业;6-中标企业。如传参不在以上范围内,按照默认维度返回戳这里查看详情返回样例{ "code": 200,//返回码,详见返回码说明 "msg": "成功",//code对应的描述 "taskNo": "110050403249103131160826",//本次唯一请求号 "data": { "total": 2,//总数 "items": [ { "procurementMethodCode": "8",//采购方式编码 "projectRegionCity": "深圳市",//项目区域-城市 "projectRegionDistrict": "",//项目区域-区县 "projectRegionDistrictCode": "",//项目区域-区县-行政区划代码 "projectBudgetAmount": "",//项目预算-金额 "projectBudgetAmountUnit": "",//项目预算-金额单位 "totalAmount": "",//中标总金额 "totalAmountUnit": "",//中标总金额单位 "bidDocumentStartTime": "",//标书获取开始时间 "bidDocumentEndTime": "",//标书获取截止时间 "registrationStartTime": "",//报名开始时间 "registrationEndTime": "",//报名截止时间 "biddingStartTime": "",//投标开始时间 "biddingEndTime": "",//投标结束时间 "openingBidTime": "",//开标时间 "estimatedPurchasingTime": "",//预计采购时间 "contractNum": "",//合同编号 "quotationValidityStart": "",//报价有效期-起 "quotationValidityEnd": "",//报价有效期-止 "tenderDocumentPriceAmount": "",//标书售价(金额数字) "tenderDocumentPriceUnit": "",//标书售价(金额单位) "registrationFeeAmount": "",//报名费(金额数字) "registrationFeeUnit": "",//报名费(金额单位) "biddingSecurityAmount": "",//投标保证金(金额数字) "biddingSecurityUnit": "",//投标保证金(金额单位) "caPaymentAmount": "",//CA缴纳费用(金额数字) "caPaymentUnit": "",//CA缴纳费用(金额单位) "tenderAgentServiceFeeAmount": "",//招标代理服务费(金额数字) "tenderAgentServiceFeeUnit": "",//招标代理服务费(金额单位) "performanceSecurityAmount": "",//履约保证金(金额数字) "performanceSecurityUnit": "",//履约保证金(金额单位) "announcementTypeCode": "2",//公告类型编码 "purchaseAgency": [//采购单位&代理机构 { "companyName": "xx国际招标有限公司",//企业名称 "relateType": "2",//关系类型: 1-采购;2-代理 "creditNo": "xxxxx10571092796XR" //统一社会信用代码 } ], "publishTime": "2023-01-17 00:00:00",//公告发布时间 "projectRegionProvinceCode": "440000",//项目区域-省份-行政区划代码 "winCandidate": [//中标企业&候选单位 { "bidSectionNumber": "2022-SZ-0055-01",//标段编号 "bidItemName": "xxxx区块链基础服务平台项目(KF-2223-02)采购项目",//标段名称 "companyName": "杭州xxx科技有限公司",//企业名称 "relateType": "3",//关系类型:3-候选人;4-中标人 "amount": "",//金额(中标类型为中标金额;候选类型为报价金额) "amountUnit": "",//金额单位 "creditNo": "xxxxx10MA2CC1X505" //统一社会信用代码 } ], "contactsPurchaseAgency": [//联系方式-采购单位&代理机构 { "phone": "",//电话 "relateType": "",//关系类型:1-采购单位、2-代理机构 "contactPerson": "",//联系人 "email": "" //邮箱 } ], "projectName": "xxxx区块链基础服务平台项目(KF-2223-02)采购项目",//项目名称 "title": "2022-SZ-0055-01:xxxx区块链基础服务平台项目(KF-2223-02)采购项目",//公告标题 "biddingStage": "候选公示",//招投标阶段 "industryType": "信息技术",//行业分类 "targetItemType": "服务",//标的物类型 "procurementMethod": "公开招标",//采购方式 "announcementType": "招标结果",//公告类型 "projectRegionProvince": "广东省",//项目区域-省份 "projectNumber": "2022-SZ-xxxx-01",//项目编号 "biddingStageCode": "6",//招投标阶段编码 "contactsWinCandidate": [//联系方式-中标企业&候选单位 { "phone": "",//联系人电话 "relateType": "",//关系类型:3-候选人、4-中标人 "contactPerson": "",//企业联系人 "projectManager": "", //项目经理 "projectManagerPhone": "" //项目经理联系电话 } ], "contentUrl": "http://www.xxxx.com/info-298058336.html?companyId=32",//招投标公告原文链接 "projectRegionCityCode": "440300" //项目区域-城市-行政区划代码 } ] } }
  • [热门活动] 语句倾向识别-文本情绪判定-语义情感研判-内容情绪识别API接口介绍
    前言情感倾向分析是指企业开展舆情监控、商品口碑统计、用户留言筛查工作时,面对大量主观中文文本,需要快速区分用户态度,可将文本传入接口,自动判定积极、消极、中性三大情感类型,同步输出对应置信度与正负向概率,为舆情系统、评论分析工具提供底层 AI 能力支撑。核心能力输入单段中文文本即可完成情感判定,单次文本上限 2048 字节;返回标准化 JSON 数据,直接输出情感标签、正向概率、负向概率、分类置信度四项指标,数据清晰无需二次文本解析。API介绍戳这里请求说明名称类型必须说明textString是文本内容,最大2048字节返回样例{ "code": 200,//返回code "msg": "成功",//code对应的说明描述 "taskNo": "004129616240202161380941",//本次请求号 "data": { "text": "我來測試", "items": [ { "positive_prob": 0.769728,//表示属于积极类别的概率 ,取值范围[0,1] "sentiment": 2,//表示情感极性分类结果,0:负向,1:中性,2:正向 "confidence": 0.488285,//表示分类的置信度,取值范围[0,1] "negative_prob": 0.230272 //表示属于消极类别的概率,取值范围[0,1] } ] } }
  • [互动交流] 域名注册信息查询-域名注册商查询-域名到期查询-域名状态查询API接口介绍
    前言WHOIS 域名查询是指企业开展品牌风控、站点核验、域名资产运维工作时,如需掌握域名权属与生命周期信息,可将目标域名提交接口查询,获取域名注册商、创建时间、更新时间、到期时间、域名状态、DNS 服务器等完整 WHOIS 档案,接口同时支持一级域名与二级域名直接检索。特性兼容WHOIS、RDAP 两套查询协议,各类域名信息统一整理;多通道稳定查询,避免被限制拦截;统一规整域名数据、标注隐私保护状态,无需维护双协议逻辑和复杂文本解析。API介绍戳这里请求说明名称类型必须说明websiteString是网站地址返回样例{ "code": 200, // 返回码,详见返回码说明 "msg": "成功", // 返回码对应描述 "taskNo": "65605503936940344488", // 本次请求号 "data": { "registrationTime": "2021-02-07 13:04:11",//注册时间 "country": "",//国家代码 "registrar": "Alibaba Cloud Computing (Beijing) Co.,Ltd.",//注册商 "city": "",//城市 "registrarEmail": "DomainAbuse@service.aliyun.com",//注册商邮箱 "domainStatus": "ok",//域名状态 "whoisServer": "grs-whois.hichina.com",//whois服务器 "updatedDate": "2023-12-25 01:48:34",//更新时间 "eMail": "",//联系人邮箱(有隐私保护) "province": "",//省份 "phone": "",//联系人电话(有隐私保护) "expirationTime": "2027-02-07 13:04:11",//到期时间 "domain": "jumdata.com",//域名 "nameServer": "dns7.hichina.com,dns8.hichina.com",//DNS服务器 "company": "",//公司 "openProtect": 0,//开启隐私保护(0未开,1开启) "registrarPhone": "xxxx",//注册商电话 "contacts": "" //联系人(有隐私保护) } }
  • Python实战:如何通过API获取实时数据并进行结构化处理
    最近在整理一个 Python 数据采集脚本时,遇到了一个比较典型的问题:接口数据可以正常返回,但是拿到的数据并不能直接用于后续处理。以前写一些测试程序时,通常直接请求接口,然后打印返回结果。但当数据真正进入项目后,会发现接口返回的数据格式、字段类型、时间格式都会影响后面的分析和展示。如果前期没有做好数据整理,后面修改起来会比较麻烦。所以在这次项目里,我把数据获取和数据处理两个部分拆开,先完成接口接入,再对返回内容进行统一处理。从接口返回数据开始处理实际开发中,第三方接口返回的数据大多是 JSON 格式,例如:{ "symbol": "TEST", "price": "123.45", "timestamp": "1720000000" } 看起来结构比较简单,但直接使用会遇到一些小问题。比如价格字段可能是字符串类型,时间字段可能是时间戳,如果后续需要进行计算或者排序,就需要先转换成程序能够处理的数据类型。我一般会在数据进入业务逻辑之前增加一层简单的数据处理。项目结构大概如下:project ├── api.py ├── parser.py ├── main.py其中 api.py 负责请求数据,parser.py 负责转换格式,main.py 负责调用。这样做的好处是,如果以后更换数据来源,业务代码基本不用修改。使用 Python 调用实时数据接口下面用一个简单案例演示接口调用流程。首先安装 requests:pip install requests然后创建接口请求方法:import requests def get_data(): url = "https://api.alltick.co" response = requests.get(url) if response.status_code == 200: return response.json() return None 这里使用 AllTick 提供的实时数据接口作为示例,主要展示 Python 如何完成接口请求和数据获取。在实际项目中,接口地址、请求参数以及返回字段会根据具体需求调整。拿到数据之后,不建议直接把原始数据传给后面的业务模块,而是进行一次整理。例如:data = get_data() price = float(data["price"]) timestamp = int(data["timestamp"]) 经过转换后,价格字段可以参与计算,时间字段也方便后续格式化。开发过程中比较容易忽略的几个问题第一次接入实时数据接口时,我比较容易忽略异常情况。比如网络请求失败,如果代码没有处理,程序可能直接中断。简单处理方式:try: response = requests.get(url, timeout=5) except Exception as e: print(e) 另外一个问题是字段变化。第三方接口返回的数据结构并不是永远固定,如果代码直接读取字段:data["price"] 一旦字段不存在,就会出现异常。所以实际项目里通常会增加判断:if "price" in data: price = data["price"] 还有一个经常遇到的问题是时间处理。不同接口可能返回不同格式的时间,有的是时间戳,有的是标准时间字符串。建议在数据进入系统后统一格式,否则后续统计和展示容易出现问题。关于数据接口模块的一点实践经验通过这次开发可以发现,调用 API 本身并不是难点,真正影响项目稳定性的,往往是接口之后的数据处理流程。一个比较容易维护的数据应用,通常会把数据请求、格式转换、业务处理分开。这样做虽然前期多写了一些代码,但是后续扩展功能时会轻松很多。对于 Python 开发者来说,接入第三方数据接口是一个很常见的开发场景。无论是做数据展示工具,还是构建其他类型的数据应用,都需要先把数据获取和处理流程打牢。
  • [互动交流] 企业发票归集-发票开票记录查询API接口介绍
    前言随着金税四期和全面数字化电子发票(数电票)的推广,税务机关的监管已从“以票管税”转向“以数治税”。发票归集可以帮助企业自动化的管理进项、销项发票信息,方便企业开展报税等财税工作。发票归集API可以输入纳税人识别号、开票月份、发票类型、进销项标志,按月返回所有的进项、销项发票全票面归集详情信息,是连接企业财务系统与税务局端数据的核心技术桥梁。通过API接口,企业系统可以直接从税务局的电子底账库或税务数字账户中,自动拉取全量的进销项发票数据,从而彻底替代传统的人工登录、手动下载和录入。API介绍发起归集API主要有发起归集任务和查询归集结果两个API。戳这里查看详情发起归集任务接口请求参数名称类型必须说明nsrsbhString是纳税人识别号dateTypeString否日期类型,0-按月(时间跨度不超过一年), 1-按天(时间跨度不超过一个月), 默认:0kpsjqString是开票时间起,按月格式:yyyyMM,按日期格式:yyyyMMddkpsjzString是开票时间止,按月格式:yyyyMM,按日期格式:yyyyMMddfplxString否发票类型, 多个以英文","分割jxxbzString否进销项标志,jx-进项,xx-销项。为空表示全部返回样例{ "code": 200, "msg": "成功", "taskNo": "526782409178028989145499" } 查询归集结果接口业务参数名称类型必须说明nsrsbhString是纳税人识别号requestTaskNoString是发起归集任务接口返回的taskNo返回样例归集成功返回样例{ "code": 200, "msg": "成功", "taskNo": "043439882226367117195632", "data": { "requestTaskNo": "952389968135471173207309", "nsrsbh": "91330110MA2CC1X505", "kpsjq": "202211", // 开票时间起 "kpsjz": "202211", // 开票时间止 "resultUrl": "", // 开票记录下载地址 "result": [ // 开票记录 { "fpdm": "3300224130", // 发票代码 "fphm": "19134628", // 发票号码 "gfsbh": "", // 购买方税号 "xfsbh": "91330110MA2CC1X505", // 销售方税号 "gfmc": "杭州****科技有限公司", // 购买方 "xfmc": "杭州***科技有限公司", // 销售方 "fplx": "01", // 发票类型 "jxxbz": "xx", // 进销项标志 "kpr": "张三", // 开票人 "se": 558.66, // 税额 "kprq": "2022-11-30 00:00:00", // 开票日期 "bz": "", // "jshj": 9868, // 价税合计 "je": 9309.34, // 不含税金额 "fpztDm": "0", // "hwxx": [ // 内容 { "ggxh": "", "se": 558.66, "fpdm": "3300224130", "jldw": "", "dj": "93094.339622641509434", "mc": "*研发和技术服务*服务费", "mxxh": "1", "sl": "1", "je": 9309.34, "slv": 0.06, "spbm": "3040101000000000000", "fphm": "19134628" } ] }, ... ] } } 归集中返回样例{ "code": 301, "msg": "正在归集,请稍后再试", "taskNo": "043439882226367117195632" } 归集失败返回样例{ "code": 302, "msg": "归集失败,请重新发起归集任务", "taskNo": "043439882226367117195632" }
  • [互动交流] 发票认证-发票勾选认证-进项发票认证-进项发票勾选认证API接口介绍
    前言发票认证是指企业在购进用于生产或销售的商品或原材料等时,如需要进行进项税抵扣,可将收到的增值税发票通过税局系统进行识别、确认、勾选认证。发票认证支持免插盘、多税号、集中认证。支持定时获取企业进项发票信息和认证状态,进行批量勾选、统计和确认操作,从而完成发票认证过程。API介绍戳这里查看详情进项发票勾选任务请求说明名称类型必须说明nsrsbhString是企业纳税人识别号skssqString是税款所属期,格式 yyyyMM,必填,退税勾选及撤销退税勾选时,传当前月份gxlxString是勾选类型,1:抵扣,2:退税,3:代办退税,4:不抵扣,5:逾期,6:撤销抵扣,7:撤销不抵扣,8:撤销逾期,9:勾选抵扣(出口转内销),10:勾选不抵扣(出口转内销),11:撤销抵扣(出口转内销),12:勾选类型代码撤销不抵扣(出口转内销),13:撤销退税bdkyyInteger否不抵扣原因 ,当gxlx=4时不为空,即勾选不抵扣时必填,1:用于非应税项目,2:用于免税项目,3:用于集体福利或者个人消费,4:非正常损失的,5:其他bdkyymsString否不抵扣原因描述, 当gxlx=4并且bdkyy=5时必填listString是勾选发票列表,数组的JSON字符串,例:[{“fpdm”: “3300222133”,“fphm”: “36762501”,“qdfphm”: “”,“zmbh”: “”}],详见勾选发票列表勾选发票列表名称类型必须说明fpdmString是发票代码,增值税发票、全电纸质发票必填fphmInteger是发票号码,增值税发票、全电纸质发票必填qdfphmInteger是全电发票号码(20位),为全电电子发票时必填,全电纸质发票可为空yxseInteger否有效税额,不填默认税额zmbhInteger否出口转内销证明编号,出口转内销发票必填返回样例{ "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "329903325198037812330158",//本次请求号 "data": { "reqId": "509099847312345"//申请勾选 id,用于查询结果接口 } } 进项发票勾选结果查询###请求参数名称类型必须说明nsrsbhString是企业纳税人识别号reqIdString是申请勾选 id,申请接口返回值###返回样例{ "msg": "成功",//返回码对应描述 "code": 200,//返回码,详见返回码说明 "taskNo": "724137130167701427733365",//本次请求号 "data": { "list": [ { "fphm": "36762500",//发票号码 "qdfphm": "", //全电发票号码 "kprq": "", // 开票日期,格式 yyyyMMdd "zmbh": "",//出口转内销证明编号 "gfsbh": "91330110MA2CC1X505",//购买方纳税人识别号 "fpdm": "3300222130",//发票代码 "code": "FprzBusinessVerification",// "fplx": "01",//发票类型,具体见字段说明 "cljg": "2",//申请勾选的处理结果,具体见字段说明 "message": "无此票",//查询结果描述 "zt": "2",//状态,1:申请处理中,2:申请处理失败,3:申请处理完成 "gxsj": "", // 勾选时间,格式 yyyyMMdd "gxzt": "0",//勾选状态,0未勾选 1已勾选 "gxlx": "", // 勾选类型,具体见字段说明 "je": 113.0, // 金额 "se": 13.0, // 税额 "yxse": 13.0, // 有效税额 "skssq": "", // 税款所属期,格式 yyyyMM "yskssq": "", // 原税款所属期,格式 yyyyMM,针对历史已认证当期变异常的发票该字段有值,值为历史认证的所属期 "bdkyy": "",//不抵扣原因,1 用于非应税项目 2 用于免税项目 3 用于集体福利或者个人消费 4 非正常损失的 5 其他; 当gxlx=4时不为空 "bdkyyms": ""//不抵扣原因描述,1、2、3、4 字典描述 5 其他-自定义描述;当gxlx=4并且bdkyy=5时必传 } ] } } 发票类型类型类型描述01增值税专用发票03机动车销售统一发票04增值税普通发票08增值税电子专用发票10增值税电子普通发票17海关缴款书61全电发票(航空运输电子客票行程单)83全电发票(铁路电子客票)81全电发票(增值税专用发票)82全电发票(增值税普通发票)85全电纸质发票(增值税专用发票)86全电纸质发票(增值税普通发票)87机动车销售电子统一发票注 24、30、80 为出口转内销发票类型,61、81、82、83、85、86为全电发票类型申请勾选的处理结果类型类型描述1成功2无此票3该票异常无法认证4该票已经认证5不在可勾选范围内,可勾选[2017-01-01 至 当前税款所属期]的发票6该票已经申请认证7申请认证月份已过期8其它异常9认证类型错误10该票不可勾选为逾期11有效税额异常(有效税额大于实际税额)12当期已锁定13该缴款书已申请核查14税额为零不可勾选15该票未到期16红票不能抵扣17发票未勾选(确认)18取消操作不匹配19不抵扣原因为空或异常20该票未抵扣,无法撤销抵扣勾选类型类型类型描述1抵扣2退税3代办退税4不抵扣5逾期6撤销抵扣7撤销不抵扣8撤销逾期9勾选抵扣(出口转内销)10勾选不抵扣(出口转内销)11撤销抵扣(出口转内销)12勾选类型代码撤销不抵扣(出口转内销)13撤销退税
  • [高校训练营] 基于华为云码道(CodeArts)代码智能体与 ECS 的 CoursePilot:AI 个性化学习闭环开发实践
    一、概述1.1 案例介绍在课程学习中,学生常常同时面对 PDF 讲义、Markdown 笔记、教材摘录和练习题等多种资料。传统学习工具通常只能解决“保存资料”或“回答问题”中的某一个环节,难以持续回答下面几个问题:一门课程到底包含哪些知识点,它们之间有什么层级和前置关系?学生目前真正薄弱的是哪些知识点,判断依据是什么?学习计划能否根据实际作答结果自动调整?AI 给出的知识点、题目和回答是否有课程资料依据?当模型或外部服务不可用时,核心学习流程能否继续运行?基于这些问题,我利用华为云码道(CodeArts)智能体开发了 CoursePilot。它不是一个只负责聊天的通用助手,而是一个以课程资料和学习证据为基础的 AI 个性化学习教练 Agent。系统围绕以下闭环工作:注册登录 → 创建课程 → 添加资料 → 构建知识结构 → 设置学习目标 → 初始诊断 → 生成知识画像 → 制定学习计划 → 学习与练习 → 错因分析 → 更新掌握度 → 动态调整计划 项目仓库:cid:link_7项目地址:115.120.251.21(由于成本限制,该IP发布帖子几日后可能会释放!)演示视频:项目仓库根目录 demo视频.mp41.2 核心设计原则课程无关:不把业务逻辑绑定到某一门固定课程。资料驱动:知识点、题目和学习辅导尽量建立在用户资料之上。来源可追溯:知识点和 AI 生成题目保留对应资料与分块来源。证据驱动:掌握度来自真实作答、难度、耗时和提示使用情况。人机协同:AI 负责提取、生成和辅助判断,用户保留确认与修正权。可解释与可审计:重要算法采用确定性规则,Skill 与 MCP 调用保存日志。可降级:大模型不可用时,资料解析、诊断和掌握度更新等核心流程仍可运行。1.3 适用对象希望完成 AI Agent 项目实践的高校学生;学习 Vue 3、FastAPI、MCP、Skill 与 Docker 的开发者;需要搭建课程资料管理、诊断或个性化学习系统的团队;希望了解如何将本地全栈应用部署到华为云 ECS 的开发者。1.4 案例时间本案例总时长预计240分钟。1.5 案例流程本案例采用“需求规格—架构设计—任务拆解—分阶段开发—测试验证—云端部署—迭代优化”的流程完成 CoursePilot 的设计与实现。使用华为云码道(CodeArts)代码智能体辅助完成需求分析,编写产品规格、功能需求和用户流程文档,明确 CoursePilot 的产品定位、功能范围、验收条件以及“资料驱动、证据驱动、来源可追溯”等核心原则,定义系统“做什么”。完成系统架构与技术方案设计,确定 Vue 3、FastAPI、SQLAlchemy、MCP、Skill 和 Docker Compose 技术栈,并编写领域模型、总体架构、MCP 设计、Skill 设计及关键算法 ADR,定义系统“怎么做”。根据需求和架构生成开发路线及阶段任务清单,将项目拆分为课程资料、知识结构、题库诊断、知识画像、学习计划、学习 Agent、MCP/Skill、学习看板和云端部署等可独立验收的开发任务。按照任务清单逐步开发:搭建 FastAPI 后端和 Vue 3 前端,实现用户认证、课程管理、资料解析、知识结构生成、AI 辅助出题、动态诊断、掌握度计算、个性化学习计划及渐进式辅导 Agent。建立 CoursePilot MCP Server,封装课程资料、题库、作答记录、学习状态和计划管理等工具;同时实现资料结构化、学习诊断、计划生成和苏格拉底式辅导等可插拔 Skill。使用码道代码智能体辅助进行跨文件代码审查、缺陷定位和测试补充;后端及 MCP Server 使用 Pytest 和 Ruff 验证,前端使用 TypeScript 类型检查、ESLint 和 Vite 生产构建验证。使用 Docker Compose 完成前端、后端和 MCP Server 的容器化编排,并部署至华为云 ECS;结合华为云 SWR 镜像加速解决基础镜像拉取问题,使用 Alembic 完成数据库迁移,并通过健康检查和容器日志验证服务状态。根据实际使用结果持续迭代,修复文件上传 413、AI 长任务 504、生成题目知识点 ID 越界、诊断中断后无法继续等问题,进一步提升系统的数据一致性、容错能力和用户体验。1.6 资源总览资源名称本案例使用规格主要用途计费说明弹性云服务器 ECS通用计算增强型 ac9s.large.2;2 vCPU;4 GiB;Ubuntu 24.04 Server 64 位;60 GiB 通用型 SSD运行前端、FastAPI 后端和 MCP Server 容器0.3452元/小时 弹性公网 IP EIP全动态 BGP;按流量计费;5 Mbit/s提供网站公网访问及 SSH 运维入口0.8元/GB虚拟私有云 VPC 和安全组1 个 VPC、1 个子网、1 个安全组提供私有网络及端口访问控制免费容器镜像服务 SWR使用个人专属镜像加速地址加速拉取 Python、Node.js 和 Nginx 等 Docker 基础镜像免费华为云码道(CodeArts)代码智能体专业版辅助需求分析、架构设计、任务拆解、代码开发、测试及问题定位专业版,139元/6000万tokens免排队MaaS - Console个人使用deepseek-v4-flash用于知识结构优化、AI 辅助出题及学习辅导输入:1元/百万tokens  输出:2元/百万tokensECS 本地存储SQLite 数据库及课程上传目录,共用 ECS 系统盘保存业务数据、课程资料和调用记录已包含在本案例 ECS 云硬盘配置中二、系统方案设计2.1 技术栈层级技术选型前端Vue 3、TypeScript、Pinia、Vue Router、Vite、AxiosWeb 服务Nginx后端Python 3.11、FastAPI、Pydantic、异步 SQLAlchemy数据迁移AlembicAgent 协议Model Context Protocol(MCP)业务能力4 个可插拔 Skill大模型接入OpenAI 兼容 Provider,用户自行配置模型数据库SQLite(案例演示);可切换 PostgreSQL容器化Docker、Docker Compose云资源华为云弹性云服务器 ECS、弹性公网 IP、安全组代码托管GitCodeAI 辅助开发华为云码道(CodeArts)代码智能体2.2 总体架构用户浏览器 │ ▼ Nginx / Vue 3 前端(80/443) │ /api/* ▼ FastAPI 后端(容器内部 8000) ├── SQLAlchemy / Alembic ── SQLite 或 PostgreSQL ├── 课程资料与上传文件 ├── LLM Provider ───────── 用户配置的大模型服务 └── MCP Client │ Streamable HTTP ▼ MCP Server(容器内部 8001) ├── 13 个业务工具 └── 4 个 CoursePilot 运行时 Skill2.3 项目结构CoursePilot/ ├── backend/ # FastAPI、领域模型、服务、Alembic 与测试 ├── frontend/ # Vue 3 前端 ├── mcp-server/ # MCP Server 与业务工具 ├── skills/ # 4 个 CoursePilot 运行时 Skill ├── docs/ # 需求、架构、ADR、验收与阶段报告 ├── AGENTS.md # 项目技术规范与协作约束 ├── docker-compose.yml └── README.md2.4 MCP 与 Skill 设计CoursePilot 的 MCP Server 提供 13 个业务工具,分为四类:课程与资料:课程列表、课程结构、资料检索、资料来源;学习状态:学生画像、知识点掌握度、错题;题库与作答:题目搜索、题目详情、保存作答;计划与掌握度:读取计划、更新计划、更新掌握度。系统还实现了 4 个运行时 Skill:Skill作用course_material_structuring将课程资料整理为知识结构learning_diagnosis根据作答证据分析学习状态和错因study_plan_generator生成及动态调整学习计划socratic_tutor使用分级提示进行启发式辅导三、使用华为云码道进行规范驱动开发3.1 建立项目上下文CoursePilot 涉及课程资料、题库、诊断、知识画像、计划、Agent、MCP 和 Skill 等多个领域。如果只用一句话要求 AI “生成一个学习平台”,很容易得到功能堆叠但规则不一致的代码。因此,本项目先在仓库中沉淀以下上下文:AGENTS.md:技术栈、目录结构、编码规范和测试命令;docs/product-spec.md:产品定位、范围和冻结决策;docs/requirements.md:功能需求与验收条件;docs/domain-model.md:领域实体、关系与约束;docs/architecture.md:系统边界与调用链;docs/adr/:掌握度算法、学习计划算法、Agent 编排等架构决策。3.2 各阶段Prompt每次使用时,可以先附加这段通用要求:请先阅读 AGENTS.md、本阶段相关设计文档和现有代码。 开始修改前必须: 1. 说明当前实现基线; 2. 给出任务拆解、影响文件和数据迁移方案; 3. 明确本阶段边界; 4. 不修改与本阶段无关的模块; 5. 不覆盖用户已有修改; 6. 实现后运行相关自动化测试和质量检查; 7. 最后报告修改文件、测试结果、未完成项和已知限制。 所有新增API统一放在 /api/v1/ 下。 后端IO操作优先使用 async/await。 数据库结构变更必须使用Alembic,不使用create_all代替迁移。 前端使用Vue 3、TypeScript、Pinia和<script setup lang="ts">。前置阶段:需求与规格设计请作为产品经理和系统架构师,为 CoursePilot 建立完整的需求与设计基线。 项目定位: CoursePilot 是一个课程无关、资料驱动、证据驱动、来源可追溯的AI个性化学习教练。系统需要形成: 创建课程 → 添加资料 → 构建知识结构 → 设置学习目标 → 初始诊断 → 知识画像 → 学习计划 → 学习与练习 → 错因诊断 → 掌握度更新 → 动态调整计划 请检查当前项目骨架,并编写或完善: - docs/product-spec.md - docs/requirements.md - docs/mvp-acceptance.md - docs/user-flows.md - docs/domain-model.md - docs/skill-design.md - docs/mcp-design.md - docs/development-roadmap.md - docs/current-gap-analysis.md 具体任务: 1. 定义目标用户、用户痛点、产品定位和产品边界; 2. 将需求划分为Must、Should、Could和Won't; 3. 为每项Must需求定义正常流程、异常流程和验收条件; 4. 使用Given/When/Then编写可执行验收标准; 5. 设计课程、资料、知识点、题目、诊断、画像、计划和Agent等领域实体; 6. 设计4个业务Skill及13个MCP工具; 7. 冻结掌握度、简答题、诊断题数量、模型Provider、账号体系和课程无关性决策; 8. 将开发工作拆分为阶段0至阶段7; 9. 明确每个阶段的目标、任务、边界、验收标准和交付物。 本阶段只编写需求和设计文档,不修改业务代码。 不得提前将尚未实现的功能标记为完成。阶段0:可运行基础设施基线请执行 CoursePilot 阶段0:可运行基础设施基线。 阶段目标: 让FastAPI后端、Vue前端、异步数据库、Alembic和MCP Server形成可启动、可测试的基础工程。 具体任务: 1. 修复FastAPI启动流程,确保GET /health返回200; 2. 建立统一的SQLAlchemy Base、异步engine和AsyncSession; 3. 配置Alembic target_metadata及异步迁移环境; 4. 验证upgrade head、downgrade base、再次upgrade head; 5. 统一Python模块路径和项目依赖,消除循环引用; 6. 修复Vue 3开发启动、TypeScript检查、ESLint和生产构建; 7. 将MCP Server统一为Streamable HTTP传输,端点为/mcp; 8. 确定FastAPI后端是唯一MCP Client,移除前端直连MCP的设计; 9. 修复后端、前端和MCP Server的Dockerfile及docker-compose.yml; 10. 建立后端健康检查、MCP连通性和前端页面加载冒烟测试; 11. 更新AGENTS.md和docs/deployment.md中的启动命令。 阶段边界: - 不实现课程CRUD; - 不实现资料解析; - 不创建完整业务领域模型; - 不实现正式业务Skill和MCP工具; - 不接入真实大模型; - 不实现完整注册、登录和管理员后台。 验收要求: - 后端、前端和MCP Server均可独立启动; - Alembic往返迁移通过; - MCP Streamable HTTP调用通过; - 前端type-check、lint和build通过; - docker compose config验证通过。阶段1:课程、资料与知识结构闭环请执行 CoursePilot 阶段1:课程、资料和知识结构垂直闭环。 请重点阅读: - docs/product-spec.md - docs/requirements.md中的FR-001至FR-003 - docs/domain-model.md - docs/user-flows.md中的流程1至流程4 - docs/mvp-acceptance.md中的AC-001至AC-003 阶段目标: 完成“创建课程→添加资料→解析资料→形成知识结构”的完整闭环。 具体任务: 1. 创建Course、CourseMaterial、MaterialChunk、KnowledgePoint和KnowledgeRelation模型; 2. 编写对应Alembic迁移、约束、外键和索引; 3. 实现课程创建、列表、详情、编辑和软删除API; 4. 实现PDF、Markdown、TXT文件上传及文本粘贴; 5. 实现资料状态、失败原因、重试和删除; 6. 实现规则型文本提取和资料分块; 7. 保存文件名、页码、章节或字符范围等来源信息; 8. 实现知识点新增、编辑、删除、排序和父子层级; 9. 实现prerequisite、contains和related知识关系; 10. 防止知识点关系自引用和循环依赖; 11. 实现课程列表、课程详情、资料管理和知识结构页面; 12. 使用两门内容不同的课程验证业务代码没有学科硬编码。 阶段边界: - 不实现题库和诊断; - 不实现知识画像、掌握度和学习计划; - 不实现正式业务Skill和MCP工具; - 不调用真实大模型。 验收要求: 用户能够创建课程,上传或粘贴资料,查看解析状态、资料分块和来源,并获得可编辑的树形知识结构。阶段2:题库、诊断与作答记录请执行 CoursePilot 阶段2:题库、初始诊断和作答记录。 请重点阅读: - requirements.md中的FR-004、FR-006和FR-010 - mvp-acceptance.md中的AC-004、AC-006和AC-010 - product-spec.md中的D-002和D-003 - domain-model.md中的题目、诊断和作答实体 阶段目标: 完成“建立题库→开始诊断→逐题作答→完成诊断”的业务流程。 具体任务: 1. 创建Question、QuestionOption和QuestionSource模型; 2. 创建question_knowledge_point多对多关联表; 3. 支持单选题、判断题和简答题; 4. 实现题目新增、编辑、删除、列表、筛选和审核状态; 5. 手动题目默认confirmed,AI或导入题目默认pending; 6. 题目必须关联至少一个当前课程知识点; 7. 保存题目对应的资料分块和来源位置; 8. 创建DiagnosticAttempt和AnswerRecord; 9. 按D-003规则选择诊断题: target_count = min(max(核心知识点数量, 10), 20); 10. 题库不足时阻止诊断并提示用户补充; 11. 诊断开始时保存不可变题目快照; 12. 保存答案、正确性、作答时间、跳过状态、提示次数和最高提示等级; 13. 实现L1至L4渐进式提示,L4完整解析需要二次确认; 14. 实现题库、诊断作答和诊断结果前端页面; 15. 为AI辅助出题预留接口,但本阶段不接入真实模型。 阶段边界: - 不计算知识画像和最终掌握度; - 不实现错因诊断; - 不实现学习目标和学习计划; - 不实现业务Skill、正式MCP工具和Agent。 验收要求: 用户能够管理题库并完成一次10至20题的诊断;系统保存完整作答证据,诊断题响应不得提前泄露正确答案和解析。阶段3:知识画像、错因诊断与掌握度请执行 CoursePilot 阶段3:知识画像、错因诊断和掌握度算法。 请重点阅读: - requirements.md中的FR-007、FR-011和FR-012 - mvp-acceptance.md中的对应验收条件 - product-spec.md中的D-001和D-002 - docs/adr/ADR-003-mastery-algorithm.md 阶段目标: 将用户作答记录转换为确定、可解释、可追溯的知识画像。 具体任务: 1. 创建MasteryRecord和ErrorDiagnosis模型及Alembic迁移; 2. 实现mastery-v1确定性掌握度算法; 3. 掌握度范围为0至100,置信度范围为0至1; 4. 算法考虑正确性、难度、作答时间、提示等级、连续错误、时间间隔和前置知识; 5. 使用Decimal和ROUND_HALF_UP,禁止依赖浮点round; 6. 每次有效证据追加MasteryRecord,不覆盖历史记录; 7. 保存旧值、新值、计算依据、变化原因和关联AnswerRecord; 8. 保证同一作答记录不会重复生成掌握度记录; 9. 实现10类规则型错因判断; 10. 保存错因类型、诊断依据、置信度、建议行动和关联知识点; 11. 支持用户确认或修改错因; 12. 实现知识画像列表和掌握度证据详情API; 13. 实现掌握度、置信度、薄弱点、待复习和证据链前端页面。 阶段边界: - 大模型不能直接计算或写入掌握度; - 本阶段不得调用真实LLM; - 不实现学习目标、学习计划和Agent; - 不实现正式业务Skill和MCP工具。 验收要求: 相同输入必须产生相同掌握度结果,每次变化均可追溯到具体作答记录;未经确认的简答题不得影响掌握度。阶段4:学习目标、计划与动态调整请执行 CoursePilot 阶段4:学习目标、个性化学习计划与动态调整。 请重点阅读: - requirements.md中的FR-005、FR-008和FR-013 - mvp-acceptance.md中的对应验收条件 - docs/adr/ADR-004-study-plan-algorithm.md 阶段目标: 根据学习目标、知识画像、知识点关系和时间约束生成确定、可解释的学习计划。 具体任务: 1. 创建LearningGoal、StudyPlan和StudyTask模型及迁移; 2. 每个用户每门课程只维护一个LearningGoal; 3. 支持目标日期、目标掌握度、每日时长和每周学习日; 4. 实现study-plan-v1确定性计划算法; 5. 根据掌握度差距、重要性、复习状态、连续错误和前置关系计算优先级; 6. 使用Kahn算法对前置关系稳定拓扑排序; 7. 检测知识点关系环; 8. 将任务分配到目标日期范围内的可用学习日; 9. 每日总时长不得超过daily_minutes; 10. 超过60分钟的任务拆分为多个子任务; 11. 容量不足时返回结构化错误和调整建议; 12. 每个任务保存generation_reason和generation_basis; 13. 支持完成、跳过、延期和手动调整; 14. 支持评估是否需要重新规划; 15. 重新规划时将旧计划设为superseded,并通过previous_plan_id保留历史; 16. 实现学习目标、当前计划和历史计划前端页面。 阶段边界: - 不调用真实大模型; - 不实现Agent、业务Skill和正式MCP工具; - 不实现错题本、学习看板、日历同步和消息推送。 验收要求: 计划生成结果可重复、可解释,不违反前置关系和时间容量;用户操作任务后能够评估调整需求并保留计划版本历史。阶段5:Skill、MCP、Agent 与 LLM Provider请执行 CoursePilot 阶段5:业务Skill、MCP工具、Agent和LLM Provider。 请重点阅读: - docs/skill-design.md - docs/mcp-design.md - docs/adr/ADR-005-agent-provider-and-orchestration.md - 阶段1至阶段4已经实现的业务服务 阶段目标: 建立可配置、可审计、可降级的CoursePilot Agent体系。 具体任务: 1. 删除course_recommend、schedule_optimizer和learning_analyzer占位Skill; 2. 实现4个正式Skill: - course_material_structuring - learning_diagnosis - study_plan_generator - socratic_tutor 3. 每个Skill包含skill.py、config.yaml和async execute(params); 4. Skill不直接操作数据库,通过业务服务或MCP工具获取数据; 5. 实现13个正式MCP业务工具; 6. 将MCP工具划分为只读工具和写入工具; 7. MCP Server通过BackendGateway调用FastAPI业务API; 8. 前端不得直接连接MCP Server; 9. 实现可配置的LLM Provider抽象; 10. 支持Mock Provider和OpenAI兼容Provider; 11. 自动测试只能使用Mock/Fake Provider; 12. 创建AgentSession、AgentMessage和ToolCallLog; 13. 实现Agent会话创建、消息发送、历史查询和结束会话; 14. 实现L1至L4苏格拉底式辅导; 15. 标记course_material、ai_supplement、mixed和unverified来源; 16. 所有Skill和MCP调用保存审计记录; 17. 对API Key、Token、Cookie、密码和密钥进行递归脱敏; 18. Agent写操作必须先请求用户确认; 19. 实现Agent对话和来源展示前端页面; 20. 实现Provider和MCP不可用时的规则降级。 阶段边界: - 不实现错题本和学习看板; - 不实现管理员后台; - 不允许把具体模型写成不可替换依赖; - Skill不得复制确定性掌握度和计划算法。 验收要求: 4个Skill和13个MCP工具能够独立调用;Agent可读取课程资料、画像和计划,能够恢复会话、显示来源、记录调用并在模型不可用时降级。阶段6:错题本、看板与日志展示请执行 CoursePilot 阶段6:完整前端交互、错题本、学习看板和调用日志展示。 请先检查阶段1至阶段5的数据模型和业务调用链,特别是: - AnswerRecord - DiagnosticAttemptQuestion不可变快照 - ErrorDiagnosis - MasteryRecord - StudyPlan和StudyTask - AgentSession和ToolCallLog 阶段目标: 补齐学习数据展示、错题复习和完整前端体验。 具体任务: 1. 实现WrongQuestionState模型及Alembic迁移; 2. 按user_id、course_id和question_id聚合错题; 3. 错题内容优先读取不可变题目快照; 4. 仅将有效错误作答计入错误次数; 5. 支持按知识点、错因、状态和关键词筛选; 6. 展示历史错误、资料来源、错因证据和掌握度证据; 7. 支持标记已掌握; 8. 用户后续再次答错时自动重新打开错题状态; 9. 复用DiagnosticAttempt体系创建单题练习; 10. 实现学习看板10类确定性指标; 11. 展示今日任务、总体进度、掌握度分布、薄弱点、待复习项、错因分布、本周有效作答时长和计划完成率; 12. 实现课程级ToolCallLog查询; 13. 支持类型、状态、工具、会话、时间和分页筛选; 14. 保存日志和查询输出时均执行敏感信息脱敏; 15. 实现错题本、看板和调用日志前端页面; 16. 完善加载状态、错误提示、空状态、导航、路由参数和刷新恢复。 阶段边界: - 不修改4个Skill核心逻辑; - 不修改13个MCP工具契约; - 不修改mastery-v1和study-plan-v1; - 不实现管理员后台和阶段7部署功能。 验收要求: 错题复习、学习看板和调用日志形成前后端闭环;跨用户访问统一返回404;页面刷新后数据可以从API恢复。3.3 Skill前端美化AI直接生成的前端通常不符合我们的胃口,存在以下问题:全站仍是系统默认字体、同一字号层级和同一种 8px 圆角,页面缺少品牌辨识度。紫色高饱和主色、纯白卡片加灰边框在所有页面重复,是典型的通用 AI 后台视觉。顶栏只是文本平铺,当前页面反馈弱,宽屏松散、窄屏拥挤。首页、课程列表和登录页过度居中,信息层级单薄;题库等高频页面则过密。按钮、表单、弹窗样式在各页面重复且状态不统一,Hover、Pressed、Focus 反馈不足。加载和空状态大多只是一行文字,视觉完成度不足。因此我们可以为Code添加Skill对前端进行美化我们选用GitHub - Leonxlnx/taste-skill: Taste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop · GitHub 这个67.7k Star的Github开源skill进行优化请你根据skill修改现有前端界面,做的更好看一些效果也是很明显:美化前首页美化后首页四、核心功能实现具体核心功能展示请参考仓库内的demo视频,或者通过打开网站或本地部署实际操作,这里简单展示一下界面和操作功能4.1 从课程资料生成可追溯知识结构用户可以上传 PDF、Markdown、TXT 文件,或者直接粘贴文本。后端解析后将内容切分为资料块,并保存文件、位置与内容之间的对应关系。知识结构生成时,系统不会只保存一个无法解释的标题,而是将知识点关联到原始资料。用户可以查看、调整层级和关系,降低模型幻觉对后续诊断的影响。如果知识结构生成不清晰,你可以使用AI进行结构的优化,也可以手动进行修改,使结构更加清晰4.2 基于资料的 AI 辅助出题在题库管理界面你可以手动添加题目,也可以使用AI辅助出题AI 出题只允许引用当前课程中有效的知识点 ID 和资料块 ID。模型输出后,后端还会再次校验:题型和难度是否符合请求;knowledge_point_ids 是否属于允许范围;source_chunk_id 是否来自本次课程资料;选项、答案和解析结构是否完整。如果模型第一次返回了越界 ID,系统会把错误约束和合法范围反馈给模型并重试;连续失败时停止保存,避免产生半成品题目。4.3 测验与知识画像当题库足够完整,能够覆盖全部知识点时,可以进行测验与诊断:测验过程中可以申请不同等级的提示,或者跳过,但是这和答错一样会不同程度影响你的掌握度判定!系统不会让大模型直接决定最终掌握度,而是使用确定性规则综合以下证据:作答是否正确;题目难度;作答耗时;提示次数与提示等级;最近正确率;是否重复犯错;前置知识掌握情况。每次掌握度变化都会保存旧值、新值、变化原因和关联作答记录,用户能够查看“为什么发生了这次变化”。错题可以在“错题本”中进行复习,或者重新做题:4.4 学习计划与动态调整用户可以设置目标日期、目标掌握度、每日学习时长和每周可学习日期。系统根据知识画像、知识点重要程度、前置关系、历史错题和可用时间生成学习任务。当用户完成任务、连续答错或掌握度明显变化时,系统可以触发重新规划,并保留计划版本和调整原因。同时用户也可以在学习看板上查看一系列学习数据:4.5 渐进式学习辅导 Agent学习辅导 Agent 通过 MCP 工具读取当前课程资料、知识结构、学生画像和学习计划,再由 Skill 控制提示节奏:L1:提醒相关知识点;L2:指出思路方向;L3:给出关键步骤;L4:在用户确认后给出完整解析。回复通过 SSE 流式返回,并标记内容来自课程资料、AI 补充或混合来源。模型不可用时,系统可以降级为规则型提示。五、部署到华为云 ECS5.1 案例环境本案例采用一台华为云 ECS 完成演示部署:配置项案例选择区域华东-上海一ECS通用计算增强型,2 vCPU / 4 GiB操作系统Ubuntu 24.04 Server 64 位系统盘通用型 SSD,60 GiB公网访问弹性公网 IP,按流量计费,5 Mbit/s容器编排Docker Compose安全组:端口用途来源建议22SSH 运维仅允许管理员当前公网 IP /3280HTTP0.0.0.0/0443HTTPS0.0.0.0/05.2 登录服务器这里我采用的是密钥对登录:$key = "D:\EdgeDownload\KeyPair-e9f4.pem" icacls $key /inheritance:r icacls $key /grant:r "$($env:USERDOMAIN)\$($env:USERNAME):(R)" icacls $key先执行这一步是为了防止Window私钥文件权限过宽然后执行登录:ssh -i $key root@115.120.251.215.3 安装 Docker 和 Git登录 ECS 后执行:apt update apt install -y ca-certificates curl git install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME}) stable" \ > /etc/apt/sources.list.d/docker.list apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin systemctl enable --now docker docker --version docker compose version这里可能会出现报错,可能是因为访问 Docker 官方源被重置。直接改用华为云 Docker 镜像源即可。curl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME}) stable" \ > /etc/apt/sources.list.d/docker.list apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin systemctl enable --now docker5.4 克隆 CoursePilot输入:cd /opt git clone cid:link_7.git cd CoursePilot5.5 创建生产环境变量先生成三个密钥,分别复制输出结果:python3 -c "import secrets; print(secrets.token_urlsafe(48))" python3 -c "import secrets; print(secrets.token_urlsafe(48))" python3 -c "import base64,secrets; print(base64.urlsafe_b64encode(secrets.token_bytes(32)).decode())"创建环境变量文件:nano .env填入:SECRET_KEY=第一个随机值 MCP_INTERNAL_API_KEY=第二个随机值 LLM_CREDENTIAL_ENCRYPTION_KEY=第三个随机值 ALLOWED_ORIGINS=["http://你的EIP"]保存退出即可。5.6 添加持久化配置现有 Compose 没有持久化 SQLite 和上传文件,所以不要直接启动。创建覆盖文件:nano docker-compose.override.yml填入:services: backend: environment: DATABASE_URL: sqlite+aiosqlite:////data/coursepilot.db DEBUG: "False" SECRET_KEY: ${SECRET_KEY} LLM_CREDENTIAL_ENCRYPTION_KEY: ${LLM_CREDENTIAL_ENCRYPTION_KEY} MCP_INTERNAL_API_KEY: ${MCP_INTERNAL_API_KEY} MCP_SERVER_URL: http://mcp-server:8001/mcp UPLOAD_DIR: /data/uploads ALLOWED_ORIGINS: '${ALLOWED_ORIGINS}' volumes: - ./data:/data restart: unless-stopped frontend: restart: unless-stopped mcp-server: environment: BACKEND_API_URL: http://backend:8000/api/v1 MCP_INTERNAL_API_KEY: ${MCP_INTERNAL_API_KEY} restart: unless-stopped保存退出,创建数据目录:mkdir -p data/uploads chmod 700 data5.7. 构建并启动docker compose build --pull如果出现报错可能是因为Docker Hub 在大陆网络访问超时。需要给 Docker 配置华为云 SWR 镜像加速器。在华为云控制台:切换到“华东-上海一”。搜索并进入“容器镜像服务 SWR”。左侧选择“镜像资源 → 镜像中心”。点击“镜像加速器”。复制地址在ECS执行:mkdir -p /etc/docker nano /etc/docker/daemon.json填入复制的真实地址:{ "registry-mirrors": [ "https://xxxxxxxx.mirror.swr.myhuaweicloud.com" ] }保存退出即可!然后拉取基础镜像:docker pull python:3.11-slim docker pull node:20-alpine docker pull nginx:alpine三个都成功后,重新构建:cd /opt/CoursePilot docker compose build5.8 文件上传问题解决课程文件上传和 AI 知识结构优化都可能超过 Nginx 默认限制。可以在 /api/ 代理中补充:server { listen 80; server_name _; client_max_body_size 20m; location /api/ { proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 60s; proxy_send_timeout 300s; proxy_read_timeout 300s; } }修改后重新构建并启动前端容器:docker compose build frontenddocker compose up -d --no-deps frontend六、问题排查与踩坑复盘AI生成的代码在一些小细节上会出现疏忽和错误,同时部署过程中一些文件的配置不完全也可能会带来一些问题。这里是我列出的一部分可能会出现的问题可解决方案,如果大家部署过程中产生错误可参考以下内容:6.1 Docker Hub 连接超时现象failed to resolve source metadata for docker.io/library/python:3.11-slimdial tcp ...:443: i/o timeout原因ECS 访问 Docker Hub 不稳定,构建阶段无法获取基础镜像元数据。解决配置华为云 SWR 镜像加速器,先单独执行 docker pull 验证,再重新执行 Compose 构建。拉取完成后若 referrers 请求偶发超时,可重试构建。6.2 Alembic 找不到 app 模块现象ModuleNotFoundError: No module named 'app'原因迁移进程启动时,后端源码目录没有进入 Python 模块搜索路径。解决docker compose run --rm \ -e PYTHONPATH=/app/backend \ backend python -m alembic upgrade head6.3 上传课程资料返回 413现象Request failed with status code 413原因请求在进入 FastAPI 前就被 Nginx 的默认请求体大小限制拒绝。解决在 Nginx server 中设置 client_max_body_size,同时保证该值不小于后端允许的上传上限。6.4 AI 优化知识结构返回 504现象Request failed with status code 504原因模型需要读取多份资料并生成分层结构,耗时超过 Nginx 默认代理等待时间。解决提高 proxy_read_timeout 和 proxy_send_timeout。更长期的方案是将长任务改造成异步任务,并通过任务状态接口或 SSE 返回进度。6.5 模型返回越界知识点 ID现象第 4 道题结构不合法:knowledge_point_ids 不在允许范围内原因旧逻辑只重试题型和难度错误,知识点 ID 到保存阶段才校验,模型没有纠正机会。解决将知识点 ID 和资料块 ID 校验前移到模型重试阶段,反馈非法值与允许范围;连续失败则停止整批保存。6.6 诊断退出后无法再次进入现象该课程已有进行中的诊断,attempt_id=...原因后端正确阻止了重复创建,但前端没有恢复已有 attempt 的入口。解决将“开始诊断”设计为幂等操作:发现进行中的 attempt 时直接返回原记录,前端显示“继续诊断”,再从下一道未答题恢复。八、案例总结CoursePilot 的开发让我认识到,AI Agent 应用的难点不只是“接入一个大模型”,而是如何把模型放进一个可信、可解释、可恢复的业务闭环中。在开发阶段,华为云码道(CodeArts)代码智能体的价值主要体现在:通过 Codebase 理解跨前后端、MCP 与 Skill 的项目上下文;将自然语言需求拆解成可执行、可追踪的开发任务;在多文件修改、测试补充和日志排障中提高效率;结合仓库规范与验收条件,减少无边界生成;帮助整理从本地开发到 ECS 部署的完整过程。在运行阶段,CoursePilot 则通过资料来源、确定性算法、用户确认、调用审计和降级策略约束大模型,让 AI 真正服务于学习过程,而不是只生成看似合理的答案。九、参考资料华为云社区 HCSD 板块华为云码道(CodeArts)代码智能体产品介绍华为云码道(CodeArts)代码智能体下载安装CoursePilot GitCode 项目仓库
  • [技术干货] 二维码识别-条形码识别-条形码OCR接口介绍
    前言传统扫码硬件部署成本偏高,普通手机本地拍照解码极易受画面倾斜、反光、污渍、模糊等问题干扰,经常出现识别失败的情况。本接口兼容市面全部主流一维码、二维码格式解析,支持图片 URL、Base64 两种文件提交形式,依托图像增强修复算法大幅提升破损、畸变码图的识别成功率,精准高效解析条码内置明文数据,轻量化对接各类业务系统,轻松完成条码信息自动化解析提取工作。二维码条形码识别在以下场景中应用广泛:物流快递管理商超零售结算仓储库存盘点电子票券核销校验工业生产流程管控政务资料核验移动端系统集成单据档案电子化归档API介绍请求说明名称类型必须说明base64String否图片base64。base64、url、file 三选其一urlString否图片完整url。base64、url、file 三选其一fileFile否图片文件。base64、url、file 三选其一戳这里查看详情返回样例{ "code": 200, // 返回码,详见返回码说明 "msg": "成功", // 返回码对应描述 "taskNo": "55318992410294812098", // 本次请求号 "charge": true, // 计费标志 "data": [ { "text": ["SF1688255711970"],//二维码内容 "type": "CODE_128"//二维码类型 } ] }
  • [技术干货] 通用文字识别-通用文字OCR-文字识别接口介绍
    前言传统人工录入图文资料存在效率低、出错率高、无法留存文字位置版式信息等问题。本通用文字识别 API 依托深度学习优化算法,识别精度最高可达 99.9%,支持图片、PDF、OFD 文件解析,同步返回文本坐标、轮廓点位、段落结构与置信度数据;可快速对接各类业务系统,完成图像文字结构化、版式还原等智能化处理。通用文字识别在以下场景中应用广泛:政务档案数字化财务单据自动处理资质证件信息采集固化电子文档解析日常图文文字提取工业资产信息采集版面还原与标注开发企业办公自动化API介绍请求说明名称类型必须说明imageString否图片base64pdfString否PDF文件的base64pdfNumString否需要识别的PDF文件的对应页码,不传默认识别第 1 页ofdString否OFD文件的base64ofdNumString否需要识别的OFD文件的对应页码,不传默认识别第 1 页fileFile否文件urlString否文件地址image、pdf、ofd、file、url 必须提供一个,优先级:image > pdf > ofd > file > url文件不超过4M,最短边至少15px,最长边最大4096px图片格式为 jpg、png、bmp、jpeg戳这里查看详情返回样例{ "msg": "成功",// code 对应的描述 "code": 200,// 详见code返回码说明 "taskNo": "316942821199035820008485",// 本次请求号 "charge": true, // 计费标志 "data": { "resultNum": 2,//识别结果数 "result": [//识别结果 { "words": "测试第一行",//识别结果字符串 "location": {//位置数组(坐标0点为左上角) "top": 72,//表示定位位置的长方形左上顶点的垂直坐标 "left": 89,//表示定位位置的长方形左上顶点的水平坐标 "width": 52,//表示定位位置的长方形的宽度 "height": 12//表示定位位置的长方形的高度 }, "probability": {//表示识别结果中每一行的置信度值 "average": 0.9956096411,//行置信度平均值 "min": 0.9842295051,//行置信度最小值 "variance": 0.00003516419747//行置信度方差 }, "vertexesLocation": [//识别结果中每一行的外包四边形点坐标 { "x": 90,//水平坐标(坐标0点为左上角) "y": 73//垂直坐标(坐标0点为左上角) }, { "x": 142, "y": 73 }, { "x": 142, "y": 85 }, { "x": 90, "y": 85 } ], "finegrainedVertexesLocation": [//识别结果中每一行的多边形轮廓点坐标 { "x": 89, "y": 72 }, { "x": 101, "y": 72 }, { "x": 113, "y": 72 }, { "x": 124, "y": 72 }, { "x": 136, "y": 72 }, { "x": 141, "y": 72 }, { "x": 141, "y": 78 }, { "x": 141, "y": 84 }, { "x": 130, "y": 84 }, { "x": 118, "y": 84 }, { "x": 106, "y": 84 }, { "x": 95, "y": 84 }, { "x": 89, "y": 84 }, { "x": 89, "y": 78 } ] }, ], "paragraphsResult": [//段落检测结果 { "wordsResultIdx": [//一个段落包含的行序号 0, 1 ], "finegrainedVertexesLocation": [//识别结果中每一行的多边形轮廓点坐标 { "x": 89, "y": 72 }, { "x": 101, "y": 72 }, { "x": 113, "y": 72 }, { "x": 124, "y": 72 }, { "x": 136, "y": 72 }, { "x": 141, "y": 72 }, { "x": 141, "y": 72 }, { "x": 141, "y": 84 }, { "x": 141, "y": 88 }, { "x": 141, "y": 100 }, { "x": 141, "y": 100 }, { "x": 129, "y": 100 }, { "x": 117, "y": 100 }, { "x": 104, "y": 99 }, { "x": 92, "y": 99 }, { "x": 89, "y": 99 }, { "x": 89, "y": 99 }, { "x": 89, "y": 87 }, { "x": 89, "y": 84 }, { "x": 89, "y": 72 } ] } ], "paragraphsResultNum": 1,//识别结果数,表示 paragraphsResult 的元素个数 "pdfFileSize": 1//传入PDF文件的总页数,当 pdfFile 参数有效时返回该字段 } }
总条数:1404 到第
上滑加载中