Tesseract最初由惠普实验室支持,用于电子版文字识别,1996年被移植到Windows上,1998年进行了C++化,在2005年Tesseract由惠普公司宣布开源。2006年到现在,由Google公司维护开发。
PaddleOCR是百度开源,旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。
PaddleOCR分为文本检测、文本识别和方向分类器三部分,其中文本检测有三个模型,分别是MobileNetV3、ResNet18_vd和ResNet50,其中最常使用的是MobileNetV3模型,整体比较小,适合应用于手机端。文本识别只有一个MobileNetV3预训练模型。方向分类器使用默认的模型。
按键是一个很容易入门且强大的自动化编程工具,它主要依靠图色识别进行相关操作,也能制作字库进行文字识别,但缺陷也显而易见。它的文字识别基于点阵识别,这有非常大的局限性,一份字库几乎只能在特定的一种场景使用。为了实现免字库的通用文字识别方案,我将paddleocr以及tesseract融入到飞火ocr插件之中,并把相关的识别调用命令封装成luae插件,实现按键精灵脚本可直接与飞火ocr通信,让飞火ocr执行相关命令并返回结果
飞火ocr集成了paddleocr的ncnn本地推理模型,无需链接外网即可识别且更加适用于安卓系统,同时支持CPU和GPU两种识别模式。插件会在按键精灵调用初始化命令后创建一个本地TCP服务器,实现比http响应速度快十倍,且因为是本地识别无需字节传输图像,一张图像的识别速度都是毫秒级的速度,搭配paddleocrncnn模型实现精准且效率的识别方案
绝大多数的ocr识别要么局限于字库,无法做到通用识别,要么无法做到文字坐标的返回,这是不完美的。且不是所有页面都是有节点存在的,我们要取到文字,也可能需要取得对应的坐标以进行其他判断。
一条命令即可实现文本及坐标信息返回 例: FH.Paddle_OCR("/sdcard/anna2.png")
参数为文本型-本地图片路径,返回值为文本型,例:武器商人苏菲|72.0|52.0|157.0|52.0|157.0|69.0|72.0|69.0|相似度:0.84257734 //解释:左上角坐标(72,52),右上角坐标(157,52),右下角坐标(157,69),左下角坐标(72,69)
假设我们通过FH.Paddle_OCR_T 命令取得了某图的纯文本信息,现在需要在已知文本信息中取出特定文字的坐标位置
FH.Paddle_OCR_Z 命令可以帮我们实现这个功能,例:
TracePrint FH.Paddle_OCR_Z("/sdcard/anna.png","商人") // 查找出“商人”字符在图片中的坐标
输出结果为::商人|40.0|72.0