AipOcr.php 27 KB

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