[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] powershell调用百度ai进行文字识别

https://ai.baidu.com/sdk#ocr     登陆创建自己的识图应用,记录下apikey,secretkey,并下载baidu-aip c#sdk。
  1. [system.reflection.Assembly]::LoadFrom("C:\Users\lenovo\net40\AipSdk.dll")
  2. [system.reflection.Assembly]::LoadFrom("C:\Users\lenovo\net40\Newtonsoft.Json.dll")
  3. write-host "识别中,请等待..." -foregroundcolor green
  4. $appid="25337405"
  5. $apikey="4z3B35eRopI6ya7HNusnejah"
  6. $secretkey="p9zrifkabzPrhDqgS8kv8OoHMpPWo3CI"
  7. $pic="C:\Users\lenovo\Desktop\code.jpg"
  8. $dirpic=dir $pic
  9. $ocr=new-object baidu.aip.ocr.ocr($apikey,$secretkey)
  10. $image=[system.io.file]::readallbytes($pic)
  11. $json=$ocr.generalbasic($image)
  12. $txt=$json.toString()|convertfrom-json
  13. $txt.words_result.words
  14. write-host "共识别$($txt.words_result_num)行文字" -foregroundcolor green
  15. cd $dirpic.directoryname
  16. $fn=$dirpic.basename+"_ocr.txt"
  17. sc -path $fn -value $txt.words_result.words
  18. $null=[console]::readkey()
复制代码

本帖最后由 for_flr 于 2021-12-14 14:30 编辑

也可以用这种方式
  1. 作者@zaqmlp
  2. Add-Type -AssemblyName System.Web;
  3. $url='https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic';
  4. $pic='C:\Users\Administrator\Desktop\test.jpg';
  5. $imagedata=[Web.HttpUtility]::UrlEncode([Convert]::ToBase64String([IO.File]::ReadAllBytes($pic)));
  6. $poststr=@(   'access_token=24.b305c9822131e65eda05e29c157dd719.2592000.1559103982.282335-16139329',
  7.     $('image='+$imagedata),
  8.     'language_type=CHN_ENG',
  9.     'detect_direction=false',
  10.     'detect_language=false',
  11.     'probability=false'
  12. ) -join '&';
  13. $web=New-Object System.Net.WebClient;
  14. $web.Headers.Add('Content-Type', 'application/x-www-form-urlencoded');
  15. [byte[]]$postdata=[Text.Encoding]::UTF8.GetBytes($poststr);
  16. [byte[]]$responsedata=$web.UploadData($url, 'POST', $postdata);
  17. [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】'

TOP

1楼运行到11行时,调用baidu.aip.ocr.ocr类的方法识别图片,会有几秒等待
运行时总觉得差点意思。
应该加个进度条,如下
  1. $code = {foreach($i in 1..50){$i;sleep -m 100}}   
  2. $newPowerShell = [PowerShell]::Create().AddScript($code)
  3. $handle = $newPowerShell.BeginInvoke()   
  4. while ($handle.IsCompleted -eq $false) {
  5.   Write-Host '.' -NoNewline
  6.   Start-Sleep -m 500
  7. }
  8. Write-Host ""
  9. $newPowerShell.EndInvoke($handle)
复制代码

TOP

回复 5# 5i365
取token值报错,具体原因需要查看百度ai文档。一般是appid或者apikey值有错。
不推荐批处理代码合并为一行,影响阅读,不便于维护。吃力不讨好;powershell优点多多,只是启动的时候有点慢- -

TOP

返回列表