即将更新

Image

即将更新搭建本地ocr识别相关经验

因为最近忙着研究ocr本地识别的搭建,一直没来得及完善本博客,不过正好也整理了一些相关的经验技巧,打算近期放到博客上

关于tesseract

Tesseract最初由惠普实验室支持,用于电子版文字识别,1996年被移植到Windows上,1998年进行了C++化,在2005年Tesseract由惠普公司宣布开源。2006年到现在,由Google公司维护开发。

关于paddleocr

PaddleOCR是百度开源,旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。

PaddleOCR分为文本检测、文本识别和方向分类器三部分,其中文本检测有三个模型,分别是MobileNetV3、ResNet18_vd和ResNet50,其中最常使用的是MobileNetV3模型,整体比较小,适合应用于手机端。文本识别只有一个MobileNetV3预训练模型。方向分类器使用默认的模型。

关于我

image

博主是谁???

匠范er 或者可以叫我诸葛

一个会修电脑,会管道疏通,干过外卖,搞过土木工程,热爱编程的90后中年小叔叔

技能

会ps,能完成常规的图片修改,会电脑装机(硬件软件),从事过几年的路桥试验工作,取得了相关的检测证书,11年开始一直喜欢编程,最早接触到的是脚本语言(我认为按键精灵也算),属于是练习百家武功,但不敢妄称精通。

擅长的语言:

  • 按键精灵pc 安卓
  • 易语言、火山安卓
  • lua
  • Python
  • Java(Android studio)
  • 世界上最好的语言-PHP
  • Javascript
  • e4a
  • 懒人精灵

paddleocr在按键安卓中的应用

按键是一个很容易入门且强大的自动化编程工具,它主要依靠图色识别进行相关操作,也能制作字库进行文字识别,但缺陷也显而易见。它的文字识别基于点阵识别,这有非常大的局限性,一份字库几乎只能在特定的一种场景使用。为了实现免字库的通用文字识别方案,我将paddleocr以及tesseract融入到飞火ocr插件之中,并把相关的识别调用命令封装成luae插件,实现按键精灵脚本可直接与飞火ocr通信,让飞火ocr执行相关命令并返回结果

image

飞火ocr本地识别文字

飞火ocr集成了paddleocr的ncnn本地推理模型,无需链接外网即可识别且更加适用于安卓系统,同时支持CPU和GPU两种识别模式。插件会在按键精灵调用初始化命令后创建一个本地TCP服务器,实现比http响应速度快十倍,且因为是本地识别无需字节传输图像,一张图像的识别速度都是毫秒级的速度,搭配paddleocrncnn模型实现精准且效率的识别方案

image

飞火ocr识别文字并返回文本及坐标信息

绝大多数的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)

image

取指定文本坐标

假设我们通过FH.Paddle_OCR_T 命令取得了某图的纯文本信息,现在需要在已知文本信息中取出特定文字的坐标位置

FH.Paddle_OCR_Z 命令可以帮我们实现这个功能,例:

TracePrint FH.Paddle_OCR_Z("/sdcard/anna.png","商人") // 查找出“商人”字符在图片中的坐标

输出结果为::商人|40.0|72.0

联系我

QQ:1054185921

email:1054185921@qq.com

渝ICP备2022011397号