AipOcr.php 25 KB

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