breezedeus / CnOCR

CnOCR: Awesome Chinese/English OCR Python toolkits based on PyTorch. It comes with 20+ well-trained models for different application scenarios and can be used directly after installation. 【基于 PyTorch/MXNet 的中文/英文 OCR Python 包。】
https://www.breezedeus.com/article/cnocr
Apache License 2.0
3.26k stars 506 forks source link

对噪声、噪点太敏感了 #143

Closed mo-han closed 3 years ago

mo-han commented 3 years ago

本人非科班程序员、对机器学习更是连半只脚都没进门槛,就单纯是尝试着玩了一下。 我觉得这个OCR对噪声的敏感度比tesseract还要高。 下面两张截图都是用网络摄像头(指手机)对键盘上那几个键帽拍摄的视频画面,进行自适应阈值处理(选用高斯窗口加权平均)后得到二值图,之后直接将这些二值图喂给CnOcr().ocr。因为键帽的立体形状和表面的材质纹理,在侧面阳光下总会残留一些噪声、噪点。两张截图的不同之处在于,给高斯权重值加了不同的补偿常数,结果就是二值图上残留的噪声数量不同。第一张明显很多噪声,第二张只有零星几个噪点(但就这几个噪点还是让cnocr输出了很多错误识别):

cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 41, -32) Snipaste_2021-03-26_13-54-55

cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 41, -96) Snipaste_2021-03-26_13-57-58

最后我再啰嗦几句: 讲真cnocr我个人感觉比百度那个PaddleOCR好。虽然按理说人家那个是大公司出品,但毕竟我测试覆盖面极小,我就是觉得cnocr比paddleocr好用。 另外就是,要是能随意添加自定义映射(画面 → 字符),而无需训练一整个语言字符模型的话(就像Tesseract目前提供的工具链那样),那可就真是太好了。

mo-han commented 3 years ago

@breezedeus 为什么就直接关了?

breezedeus commented 3 years ago

因为这不算issue;cnocr自己的切行很简单,不支持复杂的切行。像你这种有明显噪点的图片,可以考虑先用cnstd做文本检测,再用cnocr。