百度接口 进行文本分析 GBK 格式转换错误

Power Query 初出茅庐 ⋅ 于 2019-10-03 12:53:04 ⋅ 最后回复由 初出茅庐 2019-10-11 10:22:51 ⋅ 2329 阅读

根据ntt图文识别改的


(wb) =>

let
token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=*************&client_secret=*************",
token_headers = [#"Content-Type"="application/json; charset=UTF-8"],
token = Json.Document(Web.Contents(token_url))[access_token],
img_url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token="&token ,
img_headers = [#"Content-Type"="application/json"],
img_content = "text="&Uri.EscapeDataString(Binary.ToText(Text.ToBinary(wb),BinaryEncoding.Hex)),
c=Json.Document(Web.Contents(img_url,[Headers=img_headers,Content=Text.ToBinary(img_content)]))
in
c

GBK格式 不会转 转过来报错无效参数
求大佬解救

成为第一个点赞的人吧 :bowtie:
最佳答案
  • geyee
    2019-10-10 23:05:20

    查看 百度nlp词法分析接口文档 ,需要 post 方法提交 json 格式的数据向带有 access_token 的指定网址,access_token 由发送带有 apikey(client_id)和 secretkey(secret_id)的指定网址的请求返回的json数据取得。
    前者可以添加 charset=UTF-8 参数以 utf-8 格式来 post utf-8 格式的 json 数据,而其默认是 gbk 编码的。返回的数据依然是json格式,故有——

    
    (wb) =>
    
    let
         token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=*&client_secret=*",
         token_headers = [#"Content-Type"="application/json; charset=UTF-8"],
         token = Json.Document(Web.Contents(token_url))[access_token],
         text_url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token="&token,
         text_headers = [#"Content-Type"="application/json"],
         text_content = "{""text"":"""&wb&"""}",
         result=Json.Document(Web.Contents(text_url,[Content=Text.ToBinary(text_content, 936)]), 936)
    in
         Table.FromRecords(result[items])


    其中,text_url对应的可以改成 "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?charset=UTF-8&access_token="&token , 以及 result 改为 Json.Document(Web.Contents(text_url,[Content=Text.ToBinary(text_content)])) 。

    继而想到 utf-8 与 gbk 编码解码的问题,看样子暂时用不到 Uri.EscapeDataString 。
    *星号需要替换一下自己申请得来的百度AI开放平台相应应用(如 产品服务 / 自然语言处理 - 应用列表 / 应用详情 下的)的值,自不必说。

回复数量: 2
  • geyee
    2019-10-10 23:05:20

    查看 百度nlp词法分析接口文档 ,需要 post 方法提交 json 格式的数据向带有 access_token 的指定网址,access_token 由发送带有 apikey(client_id)和 secretkey(secret_id)的指定网址的请求返回的json数据取得。
    前者可以添加 charset=UTF-8 参数以 utf-8 格式来 post utf-8 格式的 json 数据,而其默认是 gbk 编码的。返回的数据依然是json格式,故有——

    
    (wb) =>
    
    let
         token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=*&client_secret=*",
         token_headers = [#"Content-Type"="application/json; charset=UTF-8"],
         token = Json.Document(Web.Contents(token_url))[access_token],
         text_url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token="&token,
         text_headers = [#"Content-Type"="application/json"],
         text_content = "{""text"":"""&wb&"""}",
         result=Json.Document(Web.Contents(text_url,[Content=Text.ToBinary(text_content, 936)]), 936)
    in
         Table.FromRecords(result[items])


    其中,text_url对应的可以改成 "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?charset=UTF-8&access_token="&token , 以及 result 改为 Json.Document(Web.Contents(text_url,[Content=Text.ToBinary(text_content)])) 。

    继而想到 utf-8 与 gbk 编码解码的问题,看样子暂时用不到 Uri.EscapeDataString 。
    *星号需要替换一下自己申请得来的百度AI开放平台相应应用(如 产品服务 / 自然语言处理 - 应用列表 / 应用详情 下的)的值,自不必说。

  • 初出茅庐
    2019-10-11 10:22:51

    已解决 感谢

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter