---
title: cv_resnet18_card_correction
canonical_url: "https://www.modelscope.cn/models/iic/cv_resnet18_card_correction"
md_url: "https://www.modelscope.cn/models/iic/cv_resnet18_card_correction.md"
repository: iic/cv_resnet18_card_correction
chinese_name: "读光-票证检测矫正模型"
last_updated: 2024-01-19
license: "Apache License 2.0"
pipeline_tag: card-detection
tasks:
  - card-detection
  - ocr-detection
  - ocr-recognition
library_name:
  - pytorch
frameworks:
  - pytorch
language:
  - en
  - ch
domain:
  - cv
downloads: 790707
stars: 193
tags:
  - OCR
  - Alibaba
  - "光学字符识别"
  - "卡证检测矫正"
  - "文字检测"
  - "文字识别"
---

# cv_resnet18_card_correction

> cv_resnet18_card_correction - iic 在 ModelScope 开源的模型。【读光商用矫正模型开源，快来体验吧】由于拍照带有角度、倾斜等原因，影响卡证票据的识别准确率。通过将票证建模为4个点的任意四边形，利用模型检测出票证的四个点后再通过透视变换，即可将票证抠取并矫正为水平图片，提高识别准确率。

iic/cv_resnet18_card_correction 是 ModelScope 魔搭社区上的card-detection、ocr-detection、ocr-recognition模型，采用 Apache License 2.0 许可。

- **Repository**: iic/cv_resnet18_card_correction
- **License**: Apache License 2.0
- **Tasks**: card-detection, ocr-detection, ocr-recognition
- **Tags**: OCR, Alibaba, 光学字符识别, 卡证检测矫正, 文字检测, 文字识别
- **Downloads**: 790707
- **Stars**: 193
- **Last updated**: 2024-01-19

Source: https://www.modelscope.cn/models/iic/cv_resnet18_card_correction

---

# 票证检测矫正模型介绍
【读光商用矫正模型开源，快来体验吧】票证检测矫正模型在实际生活中有着广泛的需求，例如信息抽取、图像质量判断、证件扫描、票据审计等领等场景，可以大幅提高工作效率和准确性。本次 [读光团队](https://duguang.aliyun.com/) 开源了商用票证检测矫正模型，基于海量的真实数据训练，可以从容应对多种复杂场景的票证检测矫正任务，该模型具有以下优点：

* 支持任意角度、多卡证票据等混贴场景，同时检测输入图像任意角度的多个子图区域；
* 基于海量真实数据训练，效果满足国内常见的卡证票据的检测矫正需求；
* 支持子图区域复印件判断、四方向判断，准确率高达 99%；
* 矫正效果、推理速度远高于 modelScope 同类模型，详见本文测试报告。


##  模型效果评测
### 卡证场景


| 评测方式     | det_precison | det_recall | det_f-score | 方向判别 | 复印件判别 | 推理速度(FPS) |
| :----------- | :----------- | :--------- | :---------- | :----------- | :----------- | ------------ |
| [卡证检测矫正模型](https://modelscope.cn/models/damo/cv_resnet_carddetection_scrfd34gkps/summary) | 99.63%       | 96.80%     | 98.19%      | 无此能力 | 无此能力   | 1.83 |
| 读光-票证检测矫正模型 | 99.64%       | 99.85%     | 99.75%      | 99.78%       | 99.70%       | 14.30 |

备注：1）私有测试集，该测试集包含身份证、银行卡、驾驶证、行驶证等常见的卡证数据共计 1200 张；2）测试的速度均不包含后处理的图像透视变换；测试使用 GPU 型号：Tesla A100-PCIE-80GB

### 票据场景

| 评测方式     | det_precison | det_recall | det_f-score | 方向判别 | 复印件判别 | 推理速度(FPS) |
| :----------- | :----------- | :--------- | :---------- | :----------- | :----------- | ------------ |
| [卡证检测矫正模型](https://modelscope.cn/models/damo/cv_resnet_carddetection_scrfd34gkps/summary) | 98.90%       | 82.43%     | 89.92%      | 无此能力   | 无此能力 | 1.79 |
| 读光-票证检测矫正模型 | 99.92%       | 100.00%    | 99.96%      | 99.83% | 99.17%       | 12.55 |

备注：1）私有测试集，该测试集包含营业执照、增值税发票、机动车销售发票、出生证明等常见的票据和资质数据共计 1200 张；2）测试的速度均不包含后处理的图像透视变换；测试使用 GPU 型号：Tesla A100-PCIE-80GB

## 模型描述

下图是实现流程：输入图片，基于 Resnet18-FPN 提取特征后，在 1/4 尺寸处通过三条分支分别识别出票证的中心点、偏移量（中心点到4个顶点距离）、中心点偏移量（为了得到精准的中心点），即可解码数出票证区域的四边形框；再用透视变换将票证拉平得到矫正后的票证信息；与此同时，分类分支识别出子图朝向，用于而切割的子图转正。

![pipeline](./description/Pipeline.jpg)

## 效果展示

下图是模型效果：

![pipeline_vis](./description/pipeline_vis.jpg)

## 期望模型使用方式以及适用范围
输入图片，模型自动检测出所有票证并矫正为水平图片。用户可以自行尝试各种输入图片。具体调用方式请参考代码示例。

### 如何使用
在安装完成 ModelScope 之后即可使用 card-detection-correction 的能力。

### 算法流程
测试时的主要预处理和后处理如下：
- 图像预处理：将输入图片按照比例缩放，长边 Resize 到 768，短边 Pad 到长短边相等，同时有减均值、除方差等归一化操作。
- 模型卡证区域检测：对输入图像中的卡证票据区域进行检测，并对 `卡证票据的方向` 和 `复印件类型` 进行分类；
- 后处理矫正：根据 `卡证区域检测框` 和 `卡证票据的方向` 对卡证区域进行透视变化，并转为水平方向；

### 使用范例
```python
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
card_detection_correction = pipeline(Tasks.card_detection_correction, model='damo/cv_resnet18_card_correction')
result = card_detection_correction('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/card_detection_correction.jpg')
print(result)
```

### 输出字段定义

| 字段名称 | 说明                                                         |
| -------- | ------------------------------------------------------------ |
| polygons | 框检得到的任意四边形四个顶点，依次为左上、右上、右下、左下   |
| scores | 框检置信度，标识检测的可行度，值域 0 到 1 之间              |
| labels | 卡证方向分类，枚举类型，0、1、2、3 依次表示卡证顺时针旋转 90度、180度、270度 |
| layout | 复印件分类，枚举类型，0 表示非复印件，1 表示复印件 |
| output_imgs | 矫正后的子图区域像素值 |

所有字段第一个维度的长度相等且一一对应，为图片中票证的数量。比如polygons[0]、scores[0]、labels[0]、layout[0]、output_imgs[0]表示第一个子图的坐标、置信度、方向、是否复印件、拉平后的子图。


## 模型训练流程
本模型利用 imageNet 预训练参数进行初始化，然后在海量真实场景训练数据集上进行训练；本模型暂不支持用户自行训练；
