AipOcr.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. <?php
  2. /*
  3. * Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  6. * use this file except in compliance with the License. You may obtain a copy of
  7. * the License at
  8. *
  9. * Http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  13. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  14. * License for the specific language governing permissions and limitations under
  15. * the License.
  16. */
  17. require_once 'lib/AipBase.php';
  18. class AipOcr extends AipBase {
  19. /**
  20. * 通用文字识别 general_basic api url
  21. * @var string
  22. */
  23. private $generalBasicUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic';
  24. /**
  25. * 通用文字识别(高精度版) accurate_basic api url
  26. * @var string
  27. */
  28. private $accurateBasicUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic';
  29. /**
  30. * 通用文字识别(含位置信息版) general api url
  31. * @var string
  32. */
  33. private $generalUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general';
  34. /**
  35. * 通用文字识别(含位置高精度版) accurate api url
  36. * @var string
  37. */
  38. private $accurateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate';
  39. /**
  40. * 通用文字识别(含生僻字版) general_enhanced api url
  41. * @var string
  42. */
  43. private $generalEnhancedUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_enhanced';
  44. /**
  45. * 网络图片文字识别 web_image api url
  46. * @var string
  47. */
  48. private $webImageUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/webimage';
  49. /**
  50. * 身份证识别 idcard api url
  51. * @var string
  52. */
  53. private $idcardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard';
  54. /**
  55. * 银行卡识别 bankcard api url
  56. * @var string
  57. */
  58. private $bankcardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard';
  59. /**
  60. * 驾驶证识别 driving_license api url
  61. * @var string
  62. */
  63. private $drivingLicenseUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/driving_license';
  64. /**
  65. * 行驶证识别 vehicle_license api url
  66. * @var string
  67. */
  68. private $vehicleLicenseUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license';
  69. /**
  70. * 车牌识别 license_plate api url
  71. * @var string
  72. */
  73. private $licensePlateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate';
  74. /**
  75. * 营业执照识别 business_license api url
  76. * @var string
  77. */
  78. private $businessLicenseUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/business_license';
  79. /**
  80. * 通用票据识别 receipt api url
  81. * @var string
  82. */
  83. private $receiptUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/receipt';
  84. /**
  85. * 自定义模版文字识别 custom api url
  86. * @var string
  87. */
  88. private $customUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise';
  89. /**
  90. * 表格文字识别 table_recognize api url
  91. * @var string
  92. */
  93. private $tableRecognizeUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/request';
  94. /**
  95. * 表格识别结果 table_result_get api url
  96. * @var string
  97. */
  98. private $tableResultGetUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/get_request_result';
  99. /**
  100. * 通用文字识别接口
  101. *
  102. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  103. * @param array $options - 可选参数对象,key: value都为string类型
  104. * @description options列表:
  105. * language_type 识别语言类型,默认为CHN_ENG。可选值包括:<br>- CHN_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;
  106. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  107. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  108. * probability 是否返回识别结果中每一行的置信度
  109. * @return array
  110. */
  111. public function basicGeneral($image, $options=array()){
  112. $data = array();
  113. $data['image'] = base64_encode($image);
  114. $data = array_merge($data, $options);
  115. return $this->request($this->generalBasicUrl, $data);
  116. }
  117. /**
  118. * 通用文字识别接口
  119. *
  120. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  121. * @param array $options - 可选参数对象,key: value都为string类型
  122. * @description options列表:
  123. * language_type 识别语言类型,默认为CHN_ENG。可选值包括:<br>- CHN_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;
  124. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  125. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  126. * probability 是否返回识别结果中每一行的置信度
  127. * @return array
  128. */
  129. public function basicGeneralUrl($url, $options=array()){
  130. $data = array();
  131. $data['url'] = $url;
  132. $data = array_merge($data, $options);
  133. return $this->request($this->generalBasicUrl, $data);
  134. }
  135. /**
  136. * 通用文字识别(高精度版)接口
  137. *
  138. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  139. * @param array $options - 可选参数对象,key: value都为string类型
  140. * @description options列表:
  141. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  142. * probability 是否返回识别结果中每一行的置信度
  143. * @return array
  144. */
  145. public function basicAccurate($image, $options=array()){
  146. $data = array();
  147. $data['image'] = base64_encode($image);
  148. $data = array_merge($data, $options);
  149. return $this->request($this->accurateBasicUrl, $data);
  150. }
  151. /**
  152. * 通用文字识别(含位置信息版)接口
  153. *
  154. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  155. * @param array $options - 可选参数对象,key: value都为string类型
  156. * @description options列表:
  157. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  158. * language_type 识别语言类型,默认为CHN_ENG。可选值包括:<br>- CHN_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;
  159. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  160. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  161. * vertexes_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
  162. * probability 是否返回识别结果中每一行的置信度
  163. * @return array
  164. */
  165. public function general($image, $options=array()){
  166. $data = array();
  167. $data['image'] = base64_encode($image);
  168. $data = array_merge($data, $options);
  169. return $this->request($this->generalUrl, $data);
  170. }
  171. /**
  172. * 通用文字识别(含位置信息版)接口
  173. *
  174. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  175. * @param array $options - 可选参数对象,key: value都为string类型
  176. * @description options列表:
  177. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  178. * language_type 识别语言类型,默认为CHN_ENG。可选值包括:<br>- CHN_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;
  179. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  180. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  181. * vertexes_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
  182. * probability 是否返回识别结果中每一行的置信度
  183. * @return array
  184. */
  185. public function generalUrl($url, $options=array()){
  186. $data = array();
  187. $data['url'] = $url;
  188. $data = array_merge($data, $options);
  189. return $this->request($this->generalUrl, $data);
  190. }
  191. /**
  192. * 通用文字识别(含位置高精度版)接口
  193. *
  194. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  195. * @param array $options - 可选参数对象,key: value都为string类型
  196. * @description options列表:
  197. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  198. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  199. * vertexes_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
  200. * probability 是否返回识别结果中每一行的置信度
  201. * @return array
  202. */
  203. public function accurate($image, $options=array()){
  204. $data = array();
  205. $data['image'] = base64_encode($image);
  206. $data = array_merge($data, $options);
  207. return $this->request($this->accurateUrl, $data);
  208. }
  209. /**
  210. * 通用文字识别(含生僻字版)接口
  211. *
  212. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  213. * @param array $options - 可选参数对象,key: value都为string类型
  214. * @description options列表:
  215. * language_type 识别语言类型,默认为CHN_ENG。可选值包括:<br>- CHN_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;
  216. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  217. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  218. * probability 是否返回识别结果中每一行的置信度
  219. * @return array
  220. */
  221. public function enhancedGeneral($image, $options=array()){
  222. $data = array();
  223. $data['image'] = base64_encode($image);
  224. $data = array_merge($data, $options);
  225. return $this->request($this->generalEnhancedUrl, $data);
  226. }
  227. /**
  228. * 通用文字识别(含生僻字版)接口
  229. *
  230. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  231. * @param array $options - 可选参数对象,key: value都为string类型
  232. * @description options列表:
  233. * language_type 识别语言类型,默认为CHN_ENG。可选值包括:<br>- CHN_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;
  234. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  235. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  236. * probability 是否返回识别结果中每一行的置信度
  237. * @return array
  238. */
  239. public function enhancedGeneralUrl($url, $options=array()){
  240. $data = array();
  241. $data['url'] = $url;
  242. $data = array_merge($data, $options);
  243. return $this->request($this->generalEnhancedUrl, $data);
  244. }
  245. /**
  246. * 网络图片文字识别接口
  247. *
  248. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  249. * @param array $options - 可选参数对象,key: value都为string类型
  250. * @description options列表:
  251. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  252. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  253. * @return array
  254. */
  255. public function webImage($image, $options=array()){
  256. $data = array();
  257. $data['image'] = base64_encode($image);
  258. $data = array_merge($data, $options);
  259. return $this->request($this->webImageUrl, $data);
  260. }
  261. /**
  262. * 网络图片文字识别接口
  263. *
  264. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  265. * @param array $options - 可选参数对象,key: value都为string类型
  266. * @description options列表:
  267. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  268. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  269. * @return array
  270. */
  271. public function webImageUrl($url, $options=array()){
  272. $data = array();
  273. $data['url'] = $url;
  274. $data = array_merge($data, $options);
  275. return $this->request($this->webImageUrl, $data);
  276. }
  277. /**
  278. * 身份证识别接口
  279. *
  280. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  281. * @param string $idCardSide - front:身份证正面;back:身份证背面
  282. * @param array $options - 可选参数对象,key: value都为string类型
  283. * @description options列表:
  284. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  285. * detect_risk 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能,默认不开启,即:false。可选值:true-开启;false-不开启
  286. * @return array
  287. */
  288. public function idcard($image, $idCardSide, $options=array()){
  289. $data = array();
  290. $data['image'] = base64_encode($image);
  291. $data['id_card_side'] = $idCardSide;
  292. $data = array_merge($data, $options);
  293. return $this->request($this->idcardUrl, $data);
  294. }
  295. /**
  296. * 银行卡识别接口
  297. *
  298. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  299. * @param array $options - 可选参数对象,key: value都为string类型
  300. * @description options列表:
  301. * @return array
  302. */
  303. public function bankcard($image, $options=array()){
  304. $data = array();
  305. $data['image'] = base64_encode($image);
  306. $data = array_merge($data, $options);
  307. return $this->request($this->bankcardUrl, $data);
  308. }
  309. /**
  310. * 驾驶证识别接口
  311. *
  312. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  313. * @param array $options - 可选参数对象,key: value都为string类型
  314. * @description options列表:
  315. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  316. * @return array
  317. */
  318. public function drivingLicense($image, $options=array()){
  319. $data = array();
  320. $data['image'] = base64_encode($image);
  321. $data = array_merge($data, $options);
  322. return $this->request($this->drivingLicenseUrl, $data);
  323. }
  324. /**
  325. * 行驶证识别接口
  326. *
  327. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  328. * @param array $options - 可选参数对象,key: value都为string类型
  329. * @description options列表:
  330. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  331. * accuracy normal 使用快速服务,1200ms左右时延;缺省或其它值使用高精度服务,1600ms左右时延
  332. * @return array
  333. */
  334. public function vehicleLicense($image, $options=array()){
  335. $data = array();
  336. $data['image'] = base64_encode($image);
  337. $data = array_merge($data, $options);
  338. return $this->request($this->vehicleLicenseUrl, $data);
  339. }
  340. /**
  341. * 车牌识别接口
  342. *
  343. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  344. * @param array $options - 可选参数对象,key: value都为string类型
  345. * @description options列表:
  346. * multi_detect 是否检测多张车牌,默认为false,当置为true的时候可以对一张图片内的多张车牌进行识别
  347. * @return array
  348. */
  349. public function licensePlate($image, $options=array()){
  350. $data = array();
  351. $data['image'] = base64_encode($image);
  352. $data = array_merge($data, $options);
  353. return $this->request($this->licensePlateUrl, $data);
  354. }
  355. /**
  356. * 营业执照识别接口
  357. *
  358. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  359. * @param array $options - 可选参数对象,key: value都为string类型
  360. * @description options列表:
  361. * @return array
  362. */
  363. public function businessLicense($image, $options=array()){
  364. $data = array();
  365. $data['image'] = base64_encode($image);
  366. $data = array_merge($data, $options);
  367. return $this->request($this->businessLicenseUrl, $data);
  368. }
  369. /**
  370. * 通用票据识别接口
  371. *
  372. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  373. * @param array $options - 可选参数对象,key: value都为string类型
  374. * @description options列表:
  375. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  376. * probability 是否返回识别结果中每一行的置信度
  377. * accuracy normal 使用快速服务,1200ms左右时延;缺省或其它值使用高精度服务,1600ms左右时延
  378. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  379. * @return array
  380. */
  381. public function receipt($image, $options=array()){
  382. $data = array();
  383. $data['image'] = base64_encode($image);
  384. $data = array_merge($data, $options);
  385. return $this->request($this->receiptUrl, $data);
  386. }
  387. /**
  388. * 自定义模版文字识别接口
  389. *
  390. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  391. * @param string $templateSign - 您在自定义文字识别平台制作的模版的ID
  392. * @param array $options - 可选参数对象,key: value都为string类型
  393. * @description options列表:
  394. * @return array
  395. */
  396. public function custom($image, $templateSign, $options=array()){
  397. $data = array();
  398. $data['image'] = base64_encode($image);
  399. $data['templateSign'] = $templateSign;
  400. $data = array_merge($data, $options);
  401. return $this->request($this->customUrl, $data);
  402. }
  403. /**
  404. * 表格文字识别接口
  405. *
  406. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  407. * @param array $options - 可选参数对象,key: value都为string类型
  408. * @description options列表:
  409. * @return array
  410. */
  411. public function tableRecognitionAsync($image, $options=array()){
  412. $data = array();
  413. $data['image'] = base64_encode($image);
  414. $data = array_merge($data, $options);
  415. return $this->request($this->tableRecognizeUrl, $data);
  416. }
  417. /**
  418. * 表格识别结果接口
  419. *
  420. * @param string $requestId - 发送表格文字识别请求时返回的request id
  421. * @param array $options - 可选参数对象,key: value都为string类型
  422. * @description options列表:
  423. * result_type 期望获取结果的类型,取值为“excel”时返回xls文件的地址,取值为“json”时返回json格式的字符串,默认为”excel”
  424. * @return array
  425. */
  426. public function getTableRecognitionResult($requestId, $options=array()){
  427. $data = array();
  428. $data['request_id'] = $requestId;
  429. $data = array_merge($data, $options);
  430. return $this->request($this->tableResultGetUrl, $data);
  431. }
  432. /**
  433. * 同步请求
  434. * @param string $image 图像读取
  435. * @param options 接口可选参数
  436. * @return array
  437. */
  438. public function tableRecognition($image, $options=array(), $timeout=10000){
  439. $result = $this->tableRecognitionAsync($image);
  440. if(isset($result['error_code'])){
  441. return $result;
  442. }
  443. $requestId = $result['result'][0]['request_id'];
  444. $count = ceil($timeout / 1000);
  445. for($i=0; $i<$count; $i++){
  446. $result = $this->getTableRecognitionResult($requestId, $options);
  447. // 完成
  448. if($result['result']['ret_code'] == 3){
  449. break;
  450. }
  451. sleep(1);
  452. }
  453. return $result;
  454. }
  455. }