• OCR经典pipeline的发展


    Yolo+CRNN--->CTPN+CRNN--->SegLink+CRNN--->East+CRNN--->ABCnet(Bezier曲线文本检测+CRNN变体)

    https://www.leiphone.com/news/202003/CwL9pKfavCd1v8uM.html

    https://blog.csdn.net/francislucien2017/article/details/103299995 当前各组件的最佳选择

    当前场景文字识别较为主流的两种方法

    1. Attention mechanism(代表:Show, Attend and Read; Transformer-based attention; 各种各样的 2D Attention) ------在解码前给文字区域赋予较高的权重,聚焦于文本信息,弱化无关背景信息
    2. Rectification mechanism(STN + CRNN / DenseNet + CTC)--------一开始就先修正曲形的文字得到水平规整的文字 再进行识别

    基于语义分割的思想做文本检测:PSEnet,PANnet,DBnet
    https://blog.csdn.net/u012483097/article/details/104671929

    检测头问题:
    1.由于文字的特殊性,导致通用的目标检测容易在文本中间识别文本行的子集
    2. CTPN:适合水平方向的文本检测
    3. SegLink适合水平和倾斜方向的文本检测。
    4. East认为1和2这种先检测字符单元,再将检测到的单元合并成区域的做法无形降低检测效率。因此直接进行区域级的检测,适合于仿射透射等任意角度方向的文本区域检测。East是基于U-net的
    5. ABCnet解决是弯曲文本检测性能差的问题,利用曲线拟合去找到文本区域,提取对应区域ROI。

    文本检测的发展趋势:
    0.识别头一致认可CRNN识别器
    1.从检测水平文字到检测弯曲任意形状文本
    2.从检测单元到聚合单元的检测方法到单阶段文本检测的变化
    3.从需要字符单元级的标注训练到单词级的标注训练
    4.真正的单阶段的检测+识别联合训练的端到端训练(Mask TextSpotter: An End to end trainable neural Network for spotting text with abitrary shapes)

    工业上这种水平场景的文本检测,依然以CRNN为主,刷榜靠识别中引入attention

    小任务:实现用CTPN+CRNN训练模型,用pytorch的C++前端部署。

    当前ocr技术落地存在的问题

    1.通用性不强,不能自定义,不同类型的样本需要不同的模型
    2.需要大量的后处理来进行信息抽取,来文本结构化并以可用格式加载
    3.仅在受限场景上表现较好:分辨率较高的含数字及英文的扫描文档

    技术壁垒

    1.倾斜文本
    2.自然场景:未见过的字体等
    3.手写字体,草书字体(完全粘连 没有字间距),字体大小
    4.模糊/噪声图像:如8”和“ B”或“ A”和“ 4”
    5.非英文(训练数据缺乏)

  • 相关阅读:
    Hive系统函数之collect_list和collect_set
    SpringBoot集成JWT实现token验证
    Hadoop添加LZO压缩支持
    常见函数封装(自用,随时更新)
    vs-code 的常用插件
    在移动端显示控制台信息
    SublimeText 3 常见快捷键
    vue的自定义指令
    修改滚动条样式
    vue、react中循环遍历为什么会有key,key有什么作用?
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13023557.html
Copyright © 2020-2023  润新知