下面详细讲解一下“易语言调用百度图片识别实现的图片转表格的代码”的攻略流程。
步骤一:注册百度智能云
在百度云中心注册一个账号,并进入智能云控制台。在控制台中创建一个新项目,开通"文字识别"服务。
步骤二:获取百度智能云的API Key和Secret Key
在控制台“文字识别”服务下的"如何调用API"页面上找到"API Key"和"Secret Key",保存下来。
步骤三:编写易语言中的代码
在易语言中调用百度API,实现图片转表格的功能。以下是示例代码:
//导入所需的模块
导入 公共模块.XML操作.dll
导入 网络.网络.dll
//设置请求header
变量 $header 表列[0]="Content-Type:application/json"
表添加($header,"Host=aip.baidubce.com")
表添加($header,"Connection=Keep-Alive")
//设置请求参数
变量 $param 表列[0]["image"]="图片的base64编码"
表添加($param,"access_token=API Key")
表添加($param,"detect_direction=true")
表添加($param,"probability=true")
表添加($param,"accurate=false")
表添加($param,"type=excel")
//发起请求
变量 $result 网络.HTTP_POST请求("https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/request",$header,$param)
//处理返回结果
变量 $request_id 字符串.取值($result,"\"request_id\": \"","\"")
循环 直到 请求结果已得到
变量 $result2 网络.HTTP_GET请求("https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/get_request_result?request_id=" + $request_id)
如果 字符串.包含($result2,"\"result_data\": {") 则 跳出循环
流程.延时(3000) //等待3秒钟后再次请求
循环结束
//提取表格数据
变量 $table_start 字符串.查找($result2,"<table>")
变量 $table_end 字符串.查找($result2,"</table>")
变量 $table_html 字符串.子串($result2,$table_start + 7,$table_end - $table_start - 7)
变量 $table_xml "<?xml version=\"1.0\" encoding=\"UTF-8\"?><html>" + $table_html + "</html>"
变量 $table 数据转换.从XML读取($table_xml,"tr,td")
//输出结果
消息框.弹出($table)
步骤四:示例说明
示例一
在易语言中,假设有一张名为"test.jpg"的图片,图片路径为"C:\Images\test.jpg"。可以通过下面的代码将其转化为base64编码,并调用百度API来获取识别后的表格数据:
//将图片转为base64编码
变量 $image_base64 字符串.读取文件("C:\Images\test.jpg",0,0,"BASE64")
//请求参数中添加图片的base64编码
表添加($param,"image=" + $image_base64)
示例二
通过上述代码,可以将图片转为表格数据。接下来可以将表格数据保存到Excel文件中。示例代码如下:
//创建Excel文件
变量 $excel COM组件对象.创建对象("Excel.Application")
变量 $workbook COM组件对象.调用成员($excel,"Workbooks.Add")
变量 $worksheet COM组件对象.调用成员($workbook,"ActiveSheet")
//将表格数据填入Excel中
循环 从0 到 在表格中.取行数() - 1
变量 $rowdata 表格中.取行($当前数值)
循环 从0 到 在$rowdata.取列数() - 1
变量 $celldata 在$rowdata.取列($当前数值)
如果 $celldata.取值() != "" 则
COM组件对象.调用成员($worksheet,"Cells").Item($当前数值 + 1,$当前循环 + 1).Value = $celldata.取值()
否则
COM组件对象.调用成员($worksheet,"Cells").Item($当前数值 + 1,$当前循环 + 1).Value = " "
如果结束
循环结束
//保存Excel文件
COM组件对象.调用成员($workbook,"SaveAs")("C:\Output\test.xlsx")
COM组件对象.调用成员($excel,"Quit")
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:易语言调用百度图片识别实现的图片转表格的代码 - Python技术站