在使用CnOcr的ocr_for_single_line方法时, 有时候会报错,错误信息如下:
File "E:\Project\GameComparePrices-development\onmyoji\imperial_soul_page.py", line 613, in get_ssr_ocr_rst
rst = cnocr_soul.ocr_for_single_line(singel_img)
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\cnocr\cn_ocr.py", line 269, in ocr_for_single_line
res = self.ocr_for_single_lines([img])
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\cnocr\cn_ocr.py", line 290, in ocr_for_single_lines
prob = self._predict(mx.nd.array(img_list))
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\cnocr\cn_ocr.py", line 346, in _predict
prob = self._mod.predict(sample)
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\module\base_module.py", line 370, in predict
self.forward(DataBatch([eval_data]))
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\module\module.py", line 625, in forward
self.reshape(new_dshape, new_lshape)
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\module\module.py", line 472, in reshape
self._exec_group.reshape(self._data_shapes, self._label_shapes)
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\module\executor_group.py", line 397, in reshape
self.bind_exec(data_shapes, label_shapes, reshape=True)
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\module\executor_group.py", line 373, in bind_exec
allow_up_sizing=True, **dict(data_shapes_i + label_shapes_i))
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\executor.py", line 458, in reshape
ctypes.byref(handle)))
File "D:\Anaconda3\envs\tensorflow\lib\site-packages\mxnet\base.py", line 255, in check_call
raise MXNetError(py_str(_LIB.MXGetLastError()))
mxnet.base.MXNetError: Error in operator imperial_soul_pagepool1_fwd: [14:16:27] C:\Jenkins\workspace\mxnet-tag\mxnet\src\operator\nn\pooling.cc:193: Check failed: param.kernel[1] <= dshape_nchw[3] + 2 * param.pad[1]: kernel size (2) exceeds input (1 padded to 1)
经过反复验证,报错的原因是输入图像的高宽比过大导致的,具体的比例的阈值为8倍,即高度/宽度小于等于8不会报错。