分享一个“产业级,开箱即用”的NLP自然语言处理工具

NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向

自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机如何准确并快速地处理大量的自然语言语料库。什么是自然语言语料库?它是用现实世界语言表达的语言学习,是从文本和语言与另一种语言的关系中理解一组抽象规则的综合方法。

人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。不仅如此,人类间的沟通交流是有上下文信息的,这对于计算机也是巨大的挑战。

结合以上难点,飞桨团队推出PaddleNLP,号称拥有 易用的文本领域API多场景的应用示例、和 高性能分布式训练 三大特点,我们先来了解一下飞浆团队。

百度的定义:

飞桨是百度旗下开源深度学习平台(PaddlePaddle),提供了诸多开源技术与框架,如常见的OCR光学字符识别(PaddleOCR)、NLP自然语言处理(PaddleNLP)等,让你实现仅需几行调用代码,即可完成一次推理工作。

结合文心大模型的OCR功夫更是了的。管网:飞桨AI Studio星河社区-人工智能学习与实训社区

下面我们说回PaddleNLP

  • 易用的文本领域API

    • 提供丰富的产业级预置任务能力 Taskflow 和全流程的文本领域API:支持丰富中文数据集加载的 Dataset API,可灵活高效地完成数据预处理的 Data API ,预置60+预训练词向量的 Embedding API ,提供100+预训练模型的 Transformer API 等,可大幅提升NLP任务建模的效率。

  • 多场景的应用示例

    • 覆盖从学术到产业级的NLP应用示例,涵盖NLP基础技术、NLP系统应用以及相关拓展应用。全面基于飞桨核心框架2.0全新API体系开发,为开发者提供飞桨文本领域的最佳实践。

  • 高性能分布式训练

    • 基于飞桨核心框架领先的自动混合精度优化策略,结合分布式Fleet API,支持4D混合并行策略,可高效地完成大规模预训练模型训练。

  • 项目GitHub: PaddlePaddle/PaddleNLP

  • 项目Gitee: PaddleNLP: Easy-to-use and powerful NLP library with Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications (Neural Search/QA/IE/Sentiment Analysis)

  • GitHub Issue反馈: PaddlePaddle/PaddleNLP#issues

如何使用PaddleNLP?

1. 环境准备

  python环境:3.7.4

  首次运行需要安装PaddlePaddle(如果已经安装请跳过)

  GPU环境需要注意CUDA版本,官网地址:开始使用_飞桨-源于产业实践的开源深度学习平台

CPU版本:
conda install paddlepaddle==2.4.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

GPU版本:
python -m pip install paddlepaddle-gpu==2.4.2.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

 安装PaddleNLP

pip install --upgrade paddlenlp

2.开始推理:

   引入依赖:

from pprint import pprint
from paddlenlp import Taskflow

   实体抽取:

schema = ['时间', '选手', '赛事名称'] #要抽取的字段信息
ie = Taskflow('information_extraction', schema=schema)
pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) #要抽取的文本信息


#Result:

[{'时间': [{'end': 6,
          'probability': 0.9857378532473966,
          'start': 0,
          'text': '2月8日上午'}],
  '赛事名称': [{'end': 23,
            'probability': 0.8503082243989795,
            'start': 6,
            'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
  '选手': [{'end': 31,
          'probability': 0.8981535684051067,
          'start': 28,
          'text': '谷爱凌'}]}]

是不是很惊艳,再无样本训练的情况下,仍能达到很好的效果。

关系抽取:

schema = {'歌曲名称': ['歌手', '所属专辑']} 
ie.set_schema(schema) # Reset schema
ie('《告别了》是孙耀威在专辑爱的故事里面的歌曲')

#Result

[{'歌曲名称': [{'text': '告别了',
    'start': 1,
    'end': 4,
    'probability': 0.6296147448952354,
    'relations': {'歌手': [{'text': '孙耀威',
       'start': 6,
       'end': 9,
       'probability': 0.9988380409852198}],
     '所属专辑': [{'text': '爱的故事',
       'start': 12,
       'end': 16,
       'probability': 0.9968462078543183}]}},
   {'text': '爱的故事',
    'start': 12,
    'end': 16,
    'probability': 0.28168534139751955,
    'relations': {'歌手': [{'text': '孙耀威',
       'start': 6,
       'end': 9,
       'probability': 0.9951413914998}]}}]}]

事件抽取:

schema = {'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']} 
ie.set_schema(schema) 
ie('中国地震台网正式测定:5月16日06时08分在云南临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10千米。')

#Result

[{'地震触发词': [{'text': '地震',
    'start': 56,
    'end': 58,
    'probability': 0.9977425555988333,
    'relations': {'地震强度': [{'text': '3.5级',
       'start': 52,
       'end': 56,
       'probability': 0.998080158269417}],
     '时间': [{'text': '5月16日06时08分',
       'start': 11,
       'end': 22,
       'probability': 0.9853299181377793}],
     '震中位置': [{'text': '云南临沧市凤庆县(北纬24.34度,东经99.98度)',
       'start': 23,
       'end': 50,
       'probability': 0.7874013050677604}],
     '震源深度': [{'text': '10千米',
       'start': 63,
       'end': 67,
       'probability': 0.9937973233053299}]}}]}]

句子级情感分类:

schema = '情感倾向[正向,负向]' 

ie.set_schema(schema) # Reset schema
ie('这个产品用起来真的很流畅,我非常喜欢')

#Result
[{'情感倾向[正向,负向]': [{'text': '正向', 'probability': 0.9990024058203417}]}]

评价维度、观点抽取,对象级情感分析:

schema = {'评价维度': ['观点词', '情感倾向[正向,负向]']} 
ie.set_schema(schema) 
pprint(ie("地址不错,服务一般,设施陈旧")) 


#Result

[{'评价维度': [{'end': 2,
            'probability': 0.9888138676472664,
            'relations': {'情感倾向[正向,负向]': [{'probability': 0.998228967796706,
                                           'text': '正向'}],
                          '观点词': [{'end': 4,
                                   'probability': 0.9927846479537372,
                                   'start': 2,
                                   'text': '不错'}]},
            'start': 0,
            'text': '地址'},
           {'end': 12,
            'probability': 0.9588297379365116,
            'relations': {'情感倾向[正向,负向]': [{'probability': 0.9949388606013692,
                                           'text': '负向'}],
                          '观点词': [{'end': 14,
                                   'probability': 0.9286749937276362,
                                   'start': 12,
                                   'text': '陈旧'}]},
            'start': 10,
            'text': '设施'},
           {'end': 7,
            'probability': 0.959285414999755,
            'relations': {'情感倾向[正向,负向]': [{'probability': 0.9952498258302498,
                                           'text': '负向'}],
                          '观点词': [{'end': 9,
                                   'probability': 0.9949358587838901,
                                   'start': 7,
                                   'text': '一般'}]},
            'start': 5,
            'text': '服务'}]}]

跨任务跨领域抽取:

schema = ['寺庙', {'丈夫': '妻子'}]
ie.set_schema(schema)
pprint(ie('李治即位后,让身在感业寺的武则天续起头发,重新纳入后宫。'))

#Result

[{'丈夫': [{'end': 2,
          'probability': 0.989690572797457,
          'relations': {'妻子': [{'end': 16,
                                'probability': 0.9987625986569526,
                                'start': 13,
                                'text': '武则天'}]},
          'start': 0,
          'text': '李治'}],
  '寺庙': [{'end': 12,
          'probability': 0.9888578809890554,
          'start': 9,
          'text': '感业寺'}]}]

中文分词:(支持文档级输入)

seg = Taskflow("word_segmentation")

doc = "苏锦一直记得那个午后,明晃晃的光线穿过教室的窗玻璃洒到自己脸上,有种特别暖和的感觉。那阳光仿佛是能够钻进人的心里,继而延展到身体全部的毛孔中,然后以一种温柔的霸道占据体内各个淋巴细胞。苏锦觉得连自己的每一个气息里都似乎是能流窜出明亮的光。她坐着有些微醉于这份上帝恩赐的福祉当中。是在这样一个午后。她记住了段见城的脸。轮廓俊朗的少年。有着羁傲的眼神和清晰的声线。怎么看这都是少女漫画里必经的情节。教语文的老太太此刻正兀自在讲台上口若悬河的讲解着《孔雀东南飞》,毕竟是已经年过半百的老教师,经历的学生多了,倒也不在乎讲台下那一张张脸上是否挂着的无精打采,昏昏欲睡的表情,按着自己的性子眉飞色舞的描绘着千年前的那段爱情传奇。苏锦一边数着从老太太口里横飞出来的唾沫星子,一边念想着,让理科班这群脑子里已全被物理公式填充了的家伙,去对几千年前焦仲卿和刘兰芝的爱情产生兴趣未免是件太困难的事情了。老太太讲到焦仲卿和刘兰芝双双殉情而死之时咳嗽了一声,提醒底下那群不知已经神游到何方的学生们是时候为文章的主旨做笔记了。苏锦把课文翻到最后,快速扫过大致内容,目光却在那句:府吏闻此事,心知长别离。徘徊庭树下,自挂东南枝上硬生生地停了下来。思绪仿若戛然而止,被某种莫名的感怀而包围,心中有些钝痛,却不知从何而来。“懦弱。”一个略带鄙夷的声音传入苏锦的耳,拦截住了她空白的思绪。苏锦转过头,瞥见后桌的段见城。恍然间有种错觉,这个男生好似是被光线包裹着一般。段见城淡淡说。若他是焦仲卿,定不会让自己和深爱的女子走到这步田地,若是真走到山穷水尽的地步,定是决然赴死。何来徘徊。那清淡口气带着些不屑,却是这般笃定至极。他说,平生最鄙夷懦弱的男子。苏锦静默的注视着这个男生。终究是没有说出话来。苏锦莫名其妙的做了段见城的女友是一年以后的事情。全班在KTV里唱歌,美名曰:升高三前最后的狂欢。包厢里都是拥挤的人,但苏锦却还是能够感受到空调的温度调得异常的低,她躲在冷风吹不到的角落,捧着大杯的雪花啤酒像是喝水一样没有节制,她觉得心里有所郁结并且心思混乱,恍恍惚惚的注视着麦克风被传了一轮又一轮,听着音像里传出或高或低的杂乱音符,而自己却似是置身于别处,与此间的喧嚣起伏无关,只觉得空荡荡。苏锦记得自己与同桌曾谈及过自己这种从暑假开始无法摆脱的混沌状态,同桌是一副了然于胸的模样,义正言辞的对苏锦说,这是高三前期综合症。她说,苏锦你别太看重所谓的高三,高考和大学都只是一个过程而并非最终的意义,我们要以平常心去对待这些。苏锦想,其实自己并非执著什么,而是自幼便对于那些未知的一切充满恐惧。因为无法掌控,所以感到束手无策,身不由己。仿佛有种被命运捏在手里随意摆弄的感觉,特别难受正当苏锦失足于自己庞大的幻觉之时,身边的朋友开始玩起了真心话大冒险之类的游戏。在一边起哄的女生提议游戏从今晚没有唱歌过的人开始,于是因为忙着在沙发上的打牌的段见城那拨人便是首先被开刷的对象,而作为聚众赌博的头子,段见城自然是第一个被逮到。几个暗自对段见城有好感的姑娘早就揣摩好了问题,苏锦被旁边兴奋过头的女生推攘着,神志也渐渐清明起来。不知是谁直白的问出了那句:阿城,你有意中人么?KTV中的嘈杂如同顿时沉淀了一般,纵然空气里似乎还遗留着些噪音过境的痕迹,更多的却是一种屏气凝神的静。段见城沉默的捏着手中那张还没打出去扑克牌,几乎是在所有人的耐心倒塌的前一秒,清晰地说出了苏锦的名字。"

print("输入长度:", len(doc))
print("分词结果:", seg(doc))

#Result

输入长度: 1413
分词结果: ['苏锦', '一直', '记得', '那个', '午后', ',', '明晃晃', '的', '光线', '穿过', '教室', '的', '窗', '玻璃', '洒', '到', '自己', '脸上', ',', '有种', '特别', '暖和', '的', '感觉', '。', '那', '阳光', '仿佛', '是', '能够', '钻进', '人', '的', '心里', ',', '继而', '延展', '到', '身体', '全部', '的', '毛孔', '中', ',', '然后', '以', '一种', '温柔', '的', '霸道', '占据', '体内', '各', '个', '淋巴细胞', '。', '苏锦', '觉得', '连', '自己', '的', '每一个', '气息', '里', '都', '似乎', '是', '能', '流窜', '出', ...........

词性标注:

from paddlenlp import Taskflow

tag = Taskflow("pos_tagging")

print(tag("第十四届全运会在西安举办"))

#Result

[(‘第十四届’, ‘m’), (‘全运会’, ‘nz’), (‘在’, ‘p’), (‘西安’, ‘LOC’), (‘举办’, ‘v’)]

命名实体识别

from paddlenlp import Taskflow

ner = Taskflow("ner")

print(ner(["李伟拿出具有科学性、可操作性的《陕西省高校管理体制改革实施方案》", "诺戴商务咨询(上海)有限公司于2016年08月22日成立"]))

#Result

[[('李伟', '人物类_实体'), ('拿出', '场景事件'), ('具有', '肯定词'), ('科学性', '修饰词_性质'), ('、', 'w'), ('可操作性', '修饰词_性质'), ('的', '助词'), ('《', 'w'), ('陕西省高校管理体制改革实施方案', '作品类_实体'), ('》', 'w')], [('诺戴商务咨询(上海)有限公司', '组织机构类_企事业单位'), ('于', '介词'), ('2016年08月22日', '时间类_具体时间'), ('成立', '场景事件')]]`在这里插入代码片`

依存句法分析

from paddlenlp import Taskflow

# 使用BiLSTM作为编码器,速度最快
ddp = Taskflow("dependency_parsing")

#Result

print(ddp("2月8日谷爱凌夺得北京冬奥会第三金"))

[{‘word’: [‘2月8日’, ‘谷爱凌’, ‘夺得’, ‘北京冬奥会’, ‘第三金’], ‘head’: [3, 3, 0, 5, 3], ‘deprel’: [‘ADV’, ‘SBV’, ‘HED’, ‘ATT’, ‘VOB’]}]

 依存句法分析标注关系集合表

文本纠错

ERNIE-CSC在ERNIE预训练模型的基础上,融合了拼音特征的端到端中文拼写纠错模型,整体框架图如下:

                        

from paddlenlp import Taskflow

corrector = Taskflow("text_correction")
print(corrector('遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇。'))

#Result

[{'source': '遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇。', 'target': '遇到逆境时,我们必须勇于面对,而且要愈挫愈勇。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]

文本相似度

from paddlenlp import Taskflow

similarity = Taskflow("text_similarity")
print(similarity([["春天适合种什么花?", "春天适合种什么菜?"], ["小蝌蚪找妈妈怎么样", "小蝌蚪找妈妈是谁画的"]]))

#Result

[{'text1': '春天适合种什么花?', 'text2': '春天适合种什么菜?', 'similarity': 0.83395267}, {'text1': '小蝌蚪找妈妈怎么样', 'text2': '小蝌蚪找妈妈是谁画的', 'similarity': 0.81923723}]

交互式闲聊对话

from paddlenlp import Taskflow

dialogue = Taskflow("dialogue")


print(dialogue(["你好"]))

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

生成式问答

基于开源社区优秀中文预训练模型CPM,参数规模26亿,预训练中文数据达100GB。
调用示例:

智能写诗
基于开源社区优秀中文预训练模型CPM,参数规模26亿,预训练中文数据达100GB。
调用示例:

参考:

开始使用_飞桨-源于产业实践的开源深度学习平台

飞桨AI Studio星河社区-人工智能学习与实训社区

PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练_汀丶人工智能的技术博客_51CTO博客

欢迎使用PaddleNLP — PaddleNLP 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python基础(二十九、pymsql)

文章目录 一、安装pymysql库二、代码实践1.连接MySQL数据库2.创建表格3.插入数据4.查询数据5.更新数据6.删除数据 三、完整代码示例四、结论 使用Python的pymysql库可以实现数据存储,这是一种连接MySQL数据库的方式。在本篇文章中,将详细介绍如何使用pym…

SpringBoot 自定义Filter 提前返回 CORS 错误 处理前后端分离跨域配置无效问题解析

前言 浏览器有跨域限制,非同源策略 (协议、主机名或端口不同) 被视为跨域请求,解决跨域有跨域资源共享(CORS)、反向代理和 JSONP的方式。本篇通过 SpringBoot 的资源共享配置 (CORS) 来解决前后端分离项目的跨域,以及从原理上去解决跨域配置…

2023年NOC大赛(学而思赛道)创意编程Python初中组决赛真题

2023年NOC大赛(学而思赛道)创意编程Python初中组决赛真题 题目总数:7 总分数:100 编程题 第 1 题 问答题 二进制回文 编程实现: 输入一个正整数,判断它的二进制形式是否是回文数,如果是输出True…

web系统服务器监控检查

一、检查操作系统是否存在增减文件,是否有shell被上传 要检查操作系统是否存在增减文件或是否有shell被上传,您可以按照以下步骤进行操作: 文件完整性检查: 使用文件系统的完整性检查工具,例如fsck(对于ext…

Backtrader 文档学习-Order Management and Execution

Backtrader 文档学习-Order Management and Execution 本章提供了关于order的详细功能测试用例,很好很重要。 最后的示例部分,详细分析总结了不同参数的效果和输出。 如果不能模拟订单交易回测就不会完整。为此,平台中提供了以下功能&…

LLM之Agent(九)| 通过API集成赋能Autogen Multi-Agent系统

随着大型语言模型的快速发展,构建基于LLM驱动的自治代理(autonomous agents)已经成为一个备受关注的话题。仅在过去一年中,就出现了许多基于这一理念的新技术和框架。 ​ 本文将探索微软开源的Agent框架:Autogen…

幻兽帕鲁服务器搭建教程分享,小白有福了

如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器,阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

vue 样式隔离原理

日常写单文件组件时&#xff0c;会在style添加scoped属性&#xff0c;如<style scoped>&#xff0c;目的是为了隔离组件与组件之间的样式&#xff0c;如下面的例子&#xff1a; <template><p class"foo">这是foo</p><p class"bar&q…

【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

文章目录 前言服务治理介绍什么是服务治理1、服务发现2、服务配置3、服务健康检测 常见的注册中心ZookeeperEurekaConsulNacos Nacos 简介Nacos 实战入门搭建nacos环境1、安装nacos2、配置nacos3、访问nacos 将商品微服务注册到 nacos1、在 pom. xml 中添加 nacos 的依赖2、在主…

华为机考入门python3--(0)测试题1-句子平均重量

分类&#xff1a;字符串 知识点&#xff1a; 获取输入 input().strip().split(" ") 拼接列表 " ".join(list) 输出指定位数的浮点数 print("%.2f" % value) len() 函数对于很多内置的数据类型都适用&#xff0c;它返回对象的元素个数或长度。…

Android App开发基础(3)——App的设计规范

3 App的设计规范 本节介绍了App工程的源码设计规范&#xff0c;首先App将看得见的界面设计与看不见的代码逻辑区分开&#xff0c;然后利用XML标记描绘应用界面&#xff0c;同时使用Java代码书写程序逻辑&#xff0c;从而形成App前后端分离的设计规约&#xff0c;有利于提高App集…

零基础学编程工具简介,中文编程开发工具

零基础学编程工具简介&#xff0c;中文编程开发工具 一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家…

大创项目推荐 题目:基于FP-Growth的新闻挖掘算法系统的设计与实现

文章目录 0 前言1 项目背景2 算法架构3 FP-Growth算法原理3.1 FP树3.2 算法过程3.3 算法实现3.3.1 构建FP树 3.4 从FP树中挖掘频繁项集 4 系统设计展示5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于FP-Growth的新闻挖掘算法系统的设计与实现…

并行化K-means聚类算法的实现与分析

并行化K-means聚类算法 并行化K-means聚类算法的实现与分析项目背景与意义算法原理与串行实现分析并行化策略与关键细节实验结果与讨论未来改进方向结语 并行化K-means聚类算法的实现与分析 在大数据时代&#xff0c;对数据进行高效的聚类是数据分析与挖掘的重要工具之一。本文…

云轴科技ZStack成为交通运输业上云用云推进中心首批成员单位

近日&#xff0c;中国信息通信研究院、中国交通运输协会信息专业委员会联合发起成立“交通运输业上云用云推进中心”&#xff0c;上海云轴信息科技有限公司&#xff08;简称云轴科技ZStack&#xff09;凭借优秀的产品技术创新能力和在交通运输领域的实践经验成为首批成员单位并…

37、Flink 的CDC 格式:debezium部署以及mysql示例(完整版)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

记录yolov8_obb训练自己的数据集

一.数据集制作 1.标注软件&#xff1a;roLabelImg roLabelImg是基于labelImg改进的&#xff0c;是用来标注为VOC格式的数据&#xff0c;但是在labelImg的基础上增加了能够使标注的框进行旋转的功能。 2.数据格式转换 2.1 xml转txt # 文件名称 &#xff1a;roxml_to_dota.p…

Linux | makefile简单教程 | Makefile的工作原理

前言 在学习完了Linux的基本操作之后&#xff0c;我们知道在linux中编写代码&#xff0c;编译代码都是要手动gcc命令&#xff0c;来执行这串代码的。 但是我们难道在以后运行代码的时候&#xff0c;难道都要自己敲gcc命令嘛&#xff1f;这是不是有点太烦了&#xff1f; 在vs中…

接口自动化测试:mock server之Moco工具

什么是mock server mock&#xff1a;英文可以翻译为模仿的&#xff0c;mock server是我们用来解除依赖&#xff08;耦合&#xff09;&#xff0c;假装实现的技术&#xff0c;比如说&#xff0c;前端需要使用某些api进行调试&#xff0c;但是服务端并没有开发完成这些api&#…

SAP 票据批导实现方法

增强结构定义 变量定义 调用bapi前处理相关变量