标题: [技术讨论] powershell调用百度ai进行文字识别 [打印本页]
作者: for_flr 时间: 2021-12-14 14:16 标题: powershell调用百度ai进行文字识别
https://ai.baidu.com/sdk#ocr 登陆创建自己的识图应用,记录下apikey,secretkey,并下载baidu-aip c#sdk。- [system.reflection.Assembly]::LoadFrom("C:\Users\lenovo\net40\AipSdk.dll")
- [system.reflection.Assembly]::LoadFrom("C:\Users\lenovo\net40\Newtonsoft.Json.dll")
- write-host "识别中,请等待..." -foregroundcolor green
- $appid="25337405"
- $apikey="4z3B35eRopI6ya7HNusnejah"
- $secretkey="p9zrifkabzPrhDqgS8kv8OoHMpPWo3CI"
- $pic="C:\Users\lenovo\Desktop\code.jpg"
- $dirpic=dir $pic
- $ocr=new-object baidu.aip.ocr.ocr($apikey,$secretkey)
- $image=[system.io.file]::readallbytes($pic)
- $json=$ocr.generalbasic($image)
- $txt=$json.toString()|convertfrom-json
- $txt.words_result.words
- write-host "共识别$($txt.words_result_num)行文字" -foregroundcolor green
- cd $dirpic.directoryname
- $fn=$dirpic.basename+"_ocr.txt"
- sc -path $fn -value $txt.words_result.words
- $null=[console]::readkey()
复制代码
作者: for_flr 时间: 2021-12-14 14:24
本帖最后由 for_flr 于 2021-12-14 14:30 编辑
也可以用这种方式- 作者@zaqmlp
- Add-Type -AssemblyName System.Web;
- $url='https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic';
- $pic='C:\Users\Administrator\Desktop\test.jpg';
- $imagedata=[Web.HttpUtility]::UrlEncode([Convert]::ToBase64String([IO.File]::ReadAllBytes($pic)));
- $poststr=@( 'access_token=24.b305c9822131e65eda05e29c157dd719.2592000.1559103982.282335-16139329',
- $('image='+$imagedata),
- 'language_type=CHN_ENG',
- 'detect_direction=false',
- 'detect_language=false',
- 'probability=false'
- ) -join '&';
- $web=New-Object System.Net.WebClient;
- $web.Headers.Add('Content-Type', 'application/x-www-form-urlencoded');
- [byte[]]$postdata=[Text.Encoding]::UTF8.GetBytes($poststr);
- [byte[]]$responsedata=$web.UploadData($url, 'POST', $postdata);
- [Text.Encoding]::UTF8.GetString($responsedata);
复制代码
在这里看到的 http://www.bathome.net/viewthrea ... p;extra=&page=2
其中,access_token有效期30天,用以下方式返回
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'
作者: for_flr 时间: 2021-12-14 15:45
1楼运行到11行时,调用baidu.aip.ocr.ocr类的方法识别图片,会有几秒等待
运行时总觉得差点意思。
应该加个进度条,如下- $code = {foreach($i in 1..50){$i;sleep -m 100}}
- $newPowerShell = [PowerShell]::Create().AddScript($code)
- $handle = $newPowerShell.BeginInvoke()
- while ($handle.IsCompleted -eq $false) {
- Write-Host '.' -NoNewline
- Start-Sleep -m 500
- }
- Write-Host ""
- $newPowerShell.EndInvoke($handle)
复制代码
作者: 5i365 时间: 2022-1-4 08:42
回复 2# for_flr
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'
你好, 上面这行获取token的代码执行后会报下面的错,但是报错信息的后面有一堆返回的信息, 里面能找到token, 怎样把token单独取出来保存成变量?
-------------------------------
curl.exe : % Total % Received % Xferd Average Speed Time Time Time Current
所在位置 行:3 字符: 1
+ curl.exe -k "https://aip.baidubce.com/oauth/2.0/token?grant_type=clie ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ( % Total % ... Time Current:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 2279 0 2279 0 0 2279 0 --:--:-- --:--:-- --:--:-- 16278
作者: 5i365 时间: 2022-1-4 08:51
本帖最后由 5i365 于 2022-1-4 08:52 编辑
回复 1# for_flr
你好, 使用这个ps代码, 可以成功识别, 但是识别的结果中经常丢字, 有些地方还没有识别, 例如下面这个图片, 没有识别后面的英文, 也丢了很多字
识别的结果是:
-------------
哪位大侠能搞个批处理,能把所有cmd的多行代码连成一行代码?感觉只要不是for语句就用&连接,然后专
下for语句就好
歌以前搜索过相关的答案,好像国外有关似问题的答案,很长时间了,找不到在啷个贴子了
人前也专门
有找到答案,可能搜索的关键词不对
有
以连接行
关键是处
外,真心感觉批处理的执行速度比 powershell快,如果是循环执
行的需求
这里有合并fo语句的示例
并后
作者: for_flr 时间: 2022-1-4 09:23
回复 5# 5i365
取token值报错,具体原因需要查看百度ai文档。一般是appid或者apikey值有错。
不推荐批处理代码合并为一行,影响阅读,不便于维护。吃力不讨好;powershell优点多多,只是启动的时候有点慢- -
作者: 5i365 时间: 2022-1-4 09:49
本帖最后由 5i365 于 2022-1-4 09:50 编辑
回复 6# for_flr
能取到token值, 显示在报错信息的下面一堆字符中
多行合一行, 是有个软件只能接受单行的批处理命令, 所以要合为一行
另外为什么识别的结果总是丢字呢?
作者: 5i365 时间: 2022-1-18 10:56
回复 6# for_flr
诚邀大侠能方便的时候修改完善一下, 这个谷歌翻译的代码, 非常感谢
http://www.bathome.net/thread-61370-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |