AipOcr.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  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. namespace common\helpers\ocr\baidu;
  18. use common\helpers\ocr\baidu\lib\AipBase;
  19. class AipOcr extends AipBase {
  20. /**
  21. * 通用文字识别 general_basic api url
  22. * @var string
  23. */
  24. private $generalBasicUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic';
  25. /**
  26. * 通用文字识别(高精度版) accurate_basic api url
  27. * @var string
  28. */
  29. private $accurateBasicUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic';
  30. /**
  31. * 通用文字识别(含位置信息版) general api url
  32. * @var string
  33. */
  34. private $generalUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general';
  35. /**
  36. * 通用文字识别(含位置高精度版) accurate api url
  37. * @var string
  38. */
  39. private $accurateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate';
  40. /**
  41. * 通用文字识别(含生僻字版) general_enhanced api url
  42. * @var string
  43. */
  44. private $generalEnhancedUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_enhanced';
  45. /**
  46. * 网络图片文字识别 web_image api url
  47. * @var string
  48. */
  49. private $webImageUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/webimage';
  50. /**
  51. * 身份证识别 idcard api url
  52. * @var string
  53. */
  54. private $idcardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard';
  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. * 表格文字识别同步接口 form api url
  87. * @var string
  88. */
  89. private $formUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/form';
  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. * 增值税发票识别 vat_invoice api url
  102. * @var string
  103. */
  104. private $vatInvoiceUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice';
  105. /**
  106. * 二维码识别 qrcode api url
  107. * @var string
  108. */
  109. private $qrcodeUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/qrcode';
  110. /**
  111. * 数字识别 numbers api url
  112. * @var string
  113. */
  114. private $numbersUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/numbers';
  115. /**
  116. * 彩票识别 lottery api url
  117. * @var string
  118. */
  119. private $lotteryUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/lottery';
  120. /**
  121. * 护照识别 passport api url
  122. * @var string
  123. */
  124. private $passportUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/passport';
  125. /**
  126. * 名片识别 business_card api url
  127. * @var string
  128. */
  129. private $businessCardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/business_card';
  130. /**
  131. * 手写文字识别 handwriting api url
  132. * @var string
  133. */
  134. private $handwritingUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting';
  135. /**
  136. * 自定义模板文字识别 custom api url
  137. * @var string
  138. */
  139. private $customUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise';
  140. /**
  141. * 通用文字识别接口
  142. *
  143. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  144. * @param array $options - 可选参数对象,key: value都为string类型
  145. * @description options列表:
  146. * 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:韩语;
  147. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  148. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  149. * probability 是否返回识别结果中每一行的置信度
  150. * @return array
  151. */
  152. public function basicGeneral($image, $options=array()){
  153. $data = array();
  154. $data['image'] = base64_encode($image);
  155. $data = array_merge($data, $options);
  156. return $this->request($this->generalBasicUrl, $data);
  157. }
  158. /**
  159. * 通用文字识别接口
  160. *
  161. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  162. * @param array $options - 可选参数对象,key: value都为string类型
  163. * @description options列表:
  164. * 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:韩语;
  165. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  166. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  167. * probability 是否返回识别结果中每一行的置信度
  168. * @return array
  169. */
  170. public function basicGeneralUrl($url, $options=array()){
  171. $data = array();
  172. $data['url'] = $url;
  173. $data = array_merge($data, $options);
  174. return $this->request($this->generalBasicUrl, $data);
  175. }
  176. /**
  177. * 通用文字识别(高精度版)接口
  178. *
  179. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  180. * @param array $options - 可选参数对象,key: value都为string类型
  181. * @description options列表:
  182. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  183. * probability 是否返回识别结果中每一行的置信度
  184. * @return array
  185. */
  186. public function basicAccurate($image, $options=array()){
  187. $data = array();
  188. $data['image'] = base64_encode($image);
  189. $data = array_merge($data, $options);
  190. return $this->request($this->accurateBasicUrl, $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. * 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:韩语;
  200. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  201. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  202. * vertexes_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
  203. * probability 是否返回识别结果中每一行的置信度
  204. * @return array
  205. */
  206. public function general($image, $options=array()){
  207. $data = array();
  208. $data['image'] = base64_encode($image);
  209. $data = array_merge($data, $options);
  210. return $this->request($this->generalUrl, $data);
  211. }
  212. /**
  213. * 通用文字识别(含位置信息版)接口
  214. *
  215. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  216. * @param array $options - 可选参数对象,key: value都为string类型
  217. * @description options列表:
  218. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  219. * 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:韩语;
  220. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  221. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  222. * vertexes_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
  223. * probability 是否返回识别结果中每一行的置信度
  224. * @return array
  225. */
  226. public function generalUrl($url, $options=array()){
  227. $data = array();
  228. $data['url'] = $url;
  229. $data = array_merge($data, $options);
  230. return $this->request($this->generalUrl, $data);
  231. }
  232. /**
  233. * 通用文字识别(含位置高精度版)接口
  234. *
  235. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  236. * @param array $options - 可选参数对象,key: value都为string类型
  237. * @description options列表:
  238. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  239. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  240. * vertexes_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false
  241. * probability 是否返回识别结果中每一行的置信度
  242. * @return array
  243. */
  244. public function accurate($image, $options=array()){
  245. $data = array();
  246. $data['image'] = base64_encode($image);
  247. $data = array_merge($data, $options);
  248. return $this->request($this->accurateUrl, $data);
  249. }
  250. /**
  251. * 通用文字识别(含生僻字版)接口
  252. *
  253. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  254. * @param array $options - 可选参数对象,key: value都为string类型
  255. * @description options列表:
  256. * 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:韩语;
  257. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  258. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  259. * probability 是否返回识别结果中每一行的置信度
  260. * @return array
  261. */
  262. public function enhancedGeneral($image, $options=array()){
  263. $data = array();
  264. $data['image'] = base64_encode($image);
  265. $data = array_merge($data, $options);
  266. return $this->request($this->generalEnhancedUrl, $data);
  267. }
  268. /**
  269. * 通用文字识别(含生僻字版)接口
  270. *
  271. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  272. * @param array $options - 可选参数对象,key: value都为string类型
  273. * @description options列表:
  274. * 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:韩语;
  275. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  276. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  277. * probability 是否返回识别结果中每一行的置信度
  278. * @return array
  279. */
  280. public function enhancedGeneralUrl($url, $options=array()){
  281. $data = array();
  282. $data['url'] = $url;
  283. $data = array_merge($data, $options);
  284. return $this->request($this->generalEnhancedUrl, $data);
  285. }
  286. /**
  287. * 网络图片文字识别接口
  288. *
  289. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  290. * @param array $options - 可选参数对象,key: value都为string类型
  291. * @description options列表:
  292. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  293. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  294. * @return array
  295. */
  296. public function webImage($image, $options=array()){
  297. $data = array();
  298. $data['image'] = base64_encode($image);
  299. $data = array_merge($data, $options);
  300. return $this->request($this->webImageUrl, $data);
  301. }
  302. /**
  303. * 网络图片文字识别接口
  304. *
  305. * @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效
  306. * @param array $options - 可选参数对象,key: value都为string类型
  307. * @description options列表:
  308. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  309. * detect_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
  310. * @return array
  311. */
  312. public function webImageUrl($url, $options=array()){
  313. $data = array();
  314. $data['url'] = $url;
  315. $data = array_merge($data, $options);
  316. return $this->request($this->webImageUrl, $data);
  317. }
  318. /**
  319. * 身份证识别接口
  320. *
  321. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  322. * @param string $idCardSide - front:身份证含照片的一面;back:身份证带国徽的一面
  323. * @param array $options - 可选参数对象,key: value都为string类型
  324. * @description options列表:
  325. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  326. * detect_risk 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能,默认不开启,即:false。可选值:true-开启;false-不开启
  327. * @return array
  328. */
  329. public function idcard($image, $idCardSide, $options=array()){
  330. $data = array();
  331. $data['image'] = base64_encode($image);
  332. $data['id_card_side'] = $idCardSide;
  333. $data = array_merge($data, $options);
  334. return $this->request($this->idcardUrl, $data);
  335. }
  336. /**
  337. * 银行卡识别接口
  338. *
  339. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  340. * @param array $options - 可选参数对象,key: value都为string类型
  341. * @description options列表:
  342. * @return array
  343. */
  344. public function bankcard($image, $options=array()){
  345. $data = array();
  346. $data['image'] = base64_encode($image);
  347. $data = array_merge($data, $options);
  348. return $this->request($this->bankcardUrl, $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. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  357. * @return array
  358. */
  359. public function drivingLicense($image, $options=array()){
  360. $data = array();
  361. $data['image'] = base64_encode($image);
  362. $data = array_merge($data, $options);
  363. return $this->request($this->drivingLicenseUrl, $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. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  372. * accuracy normal 使用快速服务,1200ms左右时延;缺省或其它值使用高精度服务,1600ms左右时延
  373. * @return array
  374. */
  375. public function vehicleLicense($image, $options=array()){
  376. $data = array();
  377. $data['image'] = base64_encode($image);
  378. $data = array_merge($data, $options);
  379. return $this->request($this->vehicleLicenseUrl, $data);
  380. }
  381. /**
  382. * 车牌识别接口
  383. *
  384. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  385. * @param array $options - 可选参数对象,key: value都为string类型
  386. * @description options列表:
  387. * multi_detect 是否检测多张车牌,默认为false,当置为true的时候可以对一张图片内的多张车牌进行识别
  388. * @return array
  389. */
  390. public function licensePlate($image, $options=array()){
  391. $data = array();
  392. $data['image'] = base64_encode($image);
  393. $data = array_merge($data, $options);
  394. return $this->request($this->licensePlateUrl, $data);
  395. }
  396. /**
  397. * 营业执照识别接口
  398. *
  399. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  400. * @param array $options - 可选参数对象,key: value都为string类型
  401. * @description options列表:
  402. * @return array
  403. */
  404. public function businessLicense($image, $options=array()){
  405. $data = array();
  406. $data['image'] = base64_encode($image);
  407. $data = array_merge($data, $options);
  408. return $this->request($this->businessLicenseUrl, $data);
  409. }
  410. /**
  411. * 通用票据识别接口
  412. *
  413. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  414. * @param array $options - 可选参数对象,key: value都为string类型
  415. * @description options列表:
  416. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  417. * probability 是否返回识别结果中每一行的置信度
  418. * accuracy normal 使用快速服务,1200ms左右时延;缺省或其它值使用高精度服务,1600ms左右时延
  419. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  420. * @return array
  421. */
  422. public function receipt($image, $options=array()){
  423. $data = array();
  424. $data['image'] = base64_encode($image);
  425. $data = array_merge($data, $options);
  426. return $this->request($this->receiptUrl, $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. $data = array();
  438. $data['image'] = base64_encode($image);
  439. $data = array_merge($data, $options);
  440. return $this->request($this->formUrl, $data);
  441. }
  442. /**
  443. * 表格文字识别接口
  444. *
  445. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  446. * @param array $options - 可选参数对象,key: value都为string类型
  447. * @description options列表:
  448. * @return array
  449. */
  450. public function tableRecognitionAsync($image, $options=array()){
  451. $data = array();
  452. $data['image'] = base64_encode($image);
  453. $data = array_merge($data, $options);
  454. return $this->request($this->tableRecognizeUrl, $data);
  455. }
  456. /**
  457. * 表格识别结果接口
  458. *
  459. * @param string $requestId - 发送表格文字识别请求时返回的request id
  460. * @param array $options - 可选参数对象,key: value都为string类型
  461. * @description options列表:
  462. * result_type 期望获取结果的类型,取值为“excel”时返回xls文件的地址,取值为“json”时返回json格式的字符串,默认为”excel”
  463. * @return array
  464. */
  465. public function getTableRecognitionResult($requestId, $options=array()){
  466. $data = array();
  467. $data['request_id'] = $requestId;
  468. $data = array_merge($data, $options);
  469. return $this->request($this->tableResultGetUrl, $data);
  470. }
  471. /**
  472. * 增值税发票识别接口
  473. *
  474. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  475. * @param array $options - 可选参数对象,key: value都为string类型
  476. * @description options列表:
  477. * @return array
  478. */
  479. public function vatInvoice($image, $options=array()){
  480. $data = array();
  481. $data['image'] = base64_encode($image);
  482. $data = array_merge($data, $options);
  483. return $this->request($this->vatInvoiceUrl, $data);
  484. }
  485. /**
  486. * 二维码识别接口
  487. *
  488. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  489. * @param array $options - 可选参数对象,key: value都为string类型
  490. * @description options列表:
  491. * @return array
  492. */
  493. public function qrcode($image, $options=array()){
  494. $data = array();
  495. $data['image'] = base64_encode($image);
  496. $data = array_merge($data, $options);
  497. return $this->request($this->qrcodeUrl, $data);
  498. }
  499. /**
  500. * 数字识别接口
  501. *
  502. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  503. * @param array $options - 可选参数对象,key: value都为string类型
  504. * @description options列表:
  505. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  506. * detect_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。
  507. * @return array
  508. */
  509. public function numbers($image, $options=array()){
  510. $data = array();
  511. $data['image'] = base64_encode($image);
  512. $data = array_merge($data, $options);
  513. return $this->request($this->numbersUrl, $data);
  514. }
  515. /**
  516. * 彩票识别接口
  517. *
  518. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  519. * @param array $options - 可选参数对象,key: value都为string类型
  520. * @description options列表:
  521. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  522. * @return array
  523. */
  524. public function lottery($image, $options=array()){
  525. $data = array();
  526. $data['image'] = base64_encode($image);
  527. $data = array_merge($data, $options);
  528. return $this->request($this->lotteryUrl, $data);
  529. }
  530. /**
  531. * 护照识别接口
  532. *
  533. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  534. * @param array $options - 可选参数对象,key: value都为string类型
  535. * @description options列表:
  536. * @return array
  537. */
  538. public function passport($image, $options=array()){
  539. $data = array();
  540. $data['image'] = base64_encode($image);
  541. $data = array_merge($data, $options);
  542. return $this->request($this->passportUrl, $data);
  543. }
  544. /**
  545. * 名片识别接口
  546. *
  547. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  548. * @param array $options - 可选参数对象,key: value都为string类型
  549. * @description options列表:
  550. * @return array
  551. */
  552. public function businessCard($image, $options=array()){
  553. $data = array();
  554. $data['image'] = base64_encode($image);
  555. $data = array_merge($data, $options);
  556. return $this->request($this->businessCardUrl, $data);
  557. }
  558. /**
  559. * 手写文字识别接口
  560. *
  561. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  562. * @param array $options - 可选参数对象,key: value都为string类型
  563. * @description options列表:
  564. * recognize_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置
  565. * @return array
  566. */
  567. public function handwriting($image, $options=array()){
  568. $data = array();
  569. $data['image'] = base64_encode($image);
  570. $data = array_merge($data, $options);
  571. return $this->request($this->handwritingUrl, $data);
  572. }
  573. /**
  574. * 自定义模板文字识别接口
  575. *
  576. * @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
  577. * @param string $templateSign - 您在自定义文字识别平台制作的模板的ID
  578. * @param array $options - 可选参数对象,key: value都为string类型
  579. * @description options列表:
  580. * @return array
  581. */
  582. public function custom($image, $templateSign, $options=array()){
  583. $data = array();
  584. $data['image'] = base64_encode($image);
  585. $data['templateSign'] = $templateSign;
  586. $data = array_merge($data, $options);
  587. return $this->request($this->customUrl, $data);
  588. }
  589. /**
  590. * 同步请求
  591. * @param string $image 图像读取
  592. * @param options 接口可选参数
  593. * @return array
  594. */
  595. public function tableRecognition($image, $options=array(), $timeout=10000){
  596. $result = $this->tableRecognitionAsync($image);
  597. if(isset($result['error_code'])){
  598. return $result;
  599. }
  600. $requestId = $result['result'][0]['request_id'];
  601. $count = ceil($timeout / 1000);
  602. for($i=0; $i<$count; $i++){
  603. $result = $this->getTableRecognitionResult($requestId, $options);
  604. // 完成
  605. if($result['result']['ret_code'] == 3){
  606. break;
  607. }
  608. sleep(1);
  609. }
  610. return $result;
  611. }
  612. }