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

[原创代码] [Perl]腾讯云 生成签名、图片识别接口调用实例

本帖最后由 523066680 于 2018-12-2 09:51 编辑

腾讯的官方文档:https://cloud.tencent.com/document/product/866/17734
官方的签名生成示例分别是 PHP JAVA Nodejs 和 C++ 的,所以我改了一个Perl的版本,补充了提交识别网络图片的代码。
  1. =info
  2.     腾讯云 印刷体图片识别示例
  3.     523066680/vicyang
  4.     2018-12
  5. =cut
  6. use LWP::UserAgent;
  7. use Encode;
  8. use utf8;
  9. use MIME::Base64;
  10. use Digest::HMAC_SHA1 qw(hmac_sha1 hmac_sha1_hex);
  11. STDOUT->autoflush(1);
  12. my $s = sign();
  13. my $ua = LWP::UserAgent->new();
  14. my $json = '{"appid":"1254154701", "url":"http://www.code-by.org/styles/prosilver/theme/images/site_logo.png"}';
  15. my @header = (
  16.     'Authorization' => $s,
  17.     'Host' => 'recognition.image.myqcloud.com',
  18.     'Content-Type' => 'application/json',
  19. );
  20. #$ua->default_header(  @header );
  21. my $res = $ua->post(
  22.         'http://recognition.image.myqcloud.com/ocr/general',
  23.         @header,
  24.         'Content' => $json,
  25.     );
  26. print encode('gbk', decode('utf8', $res->content()));
  27. sub sign
  28. {
  29.     my $appid = "APPID";
  30.     my $secret_id = "Secret_id";
  31.     my $secret_key = "Secret_key";
  32.     my $current = time();
  33.     my $rdm = int( rand(10000) + 10000 );
  34.     my $userid = 0;
  35.     my @list = (
  36.             [ 'a' => $appid ],
  37.             [ 'k' => $secret_id ],
  38.             [ 'e' => $current + 100 ],
  39.             [ 't' => $current ],
  40.             [ 'r' => $rdm ],
  41.             [ 'u' => $userid ],
  42.             [ 'f' => '' ],
  43.         );
  44.     $srcStr = join("", map { $_->[0] ."=". $_->[1] ."&" } @list );
  45.     $srcStr =~s/&$//;
  46.     # 生成签名,最右双引号表示不换行
  47.     my $signStr = encode_base64( hmac_sha1( $srcStr, $secret_key) .$srcStr, "" );
  48.     printf "%s\n", $srcStr;
  49.     return $signStr;
  50. }
复制代码
输出:
  1. {"code":0,"message":"OK","data":{"class":[],"angle":0.0,"items":[{"itemcoord":{"x":7,"y":20,"width":135,"height":13},"words":[{"character":"P","confidence":0.8444133400917053},{"character":"","confidence":1.0},{"character":"r","confidence":0.6299126744270325},{"character":"o","confidence":0.9383134841918944},{"character":"g","confidence":0.945770502090454},{"character":"r","confidence":0.9737642407417296},{"character":"","confidence":1.0},{"character":"a","confidence":0.9953640699386596},{"character":"","confidence":1.0},{"character":"m","confidence":0.9897430539131165},{"character":"m","confidence":0.9669923186302184},{"character":"i","confidence":0.9982288479804992},{"character":"n","confidence":0.999599277973175},{"character":"g","confidence":0.9985522627830504}],"itemstring":"P rogr a mming"}],"session_id":""}}
复制代码

某个扫描版电子书样张

扫描结果
  1. 22
  2. 第1章
  3. 1.设置好工具集所要求的环境变量。
  4. 2.输入一个 命令,告诉编译器编译和链接程序。
  5. 用于设置环境变量的脚本程序如表1-5所示。这些脚本程序位于命令行工具的相同目录中
  6. (见表1-3所示)。如果你所用的工具集没有出现在表1-5中,那么你就可以跳过第1步。
  7. 否则,如果你使用的是Windows系统,则运行相应的脚本程序;如果使用的是Unix系
  8. 统,则编写相应的脚本程序。
  9. 表1-5命令行工具需要的用于设置环境变量的脚本
  10. 工具集
  11. 脚本
  12. Visual C++
  13. vcvars32. bat
  14. Intel (Windows)
  15. iclvars. bat
  16. Intel (Linux)
  17. iccvars.sh或iccvars. csh
  18. Metrowerks (Mac OS X)
  19. mwvars.sh或mwvars. csh
  20. Metrowerks (Windows)
  21. cwenv. bat
  22. Comeau
  23. 与后端的工具集相同
  24. 编译和链接hello.cpp的命令如表1-6所示。要使这些命令正确运行,应使当前目录是含
  25. 有hello.cpp的目录,且包含命令行编译器的目录应出现在PATH环境变量中。如果已在
  26. 第1步中运行了脚本程序,那么后面的条件将自动满足。也有可能在你安装工具集时,安
  27. 装程序就把包含命令行工具的目录添加到PATH中了。如果不是这样,你就得如表1-7所
  28. 示的那样把目录添加到PATH中,或在命令行中指定完整的路径名。
  29. 表1-6只用一步就可完成hello.cpp编译和链接的命令
  30. 工具集
  31. 命令行
  32. GCC
  33. g++ -0 hello hello.cpp
  34. Visual C++
  35. cl -nologo -EHsc -GR -Zc:forScope -Zc:wchar_ _t -Fehello hello. cpp
  36. Intel (Windows)
  37. icl -nologo -EHsc -GR -Zc:forScope -Zc:wchar_ _I -Fehello hello.cpp
  38. Intel (Linux)
  39. icpc -0 hello hello. cpp
  40. Metrowerks
  41. mwcc -wchar_ _I on -cwd include -0 hello hello.cpp
  42. Comeau
  43. como -0 hello hello. cpp
  44. Borland
  45. bcc32 -q -ehello hello.cpp
  46. Digital Mars
  47. dmc -Ae -Ar -I<dmcroot>/stlport/stlport -o hello hello.cpp
  48. www.TopSage.com
复制代码

TOP

厉害了, OCR 吗?

TOP

回复 3# sxw


    腾讯云提供的识别服务,post 图片上去就有结果返回了。
阿里云也有这些服务,还有语音识别什么的。

TOP

返回列表