All Projects → ShawnHXH → BankCard-Recognizer

ShawnHXH / BankCard-Recognizer

Licence: MIT license
Identifying numbers from bankcard, based on Deep Learning with Keras [China Software Cup 2019]

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to BankCard-Recognizer

Text renderer
Generate text images for training deep learning ocr model
Stars: ✭ 931 (+1158.11%)
Mutual labels:  ocr, crnn
Easyocr
Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.
Stars: ✭ 13,379 (+17979.73%)
Mutual labels:  ocr, crnn
Pottan Ocr
A stupid OCR for malayalam language
Stars: ✭ 39 (-47.3%)
Mutual labels:  ocr, crnn
insightocr
MXNet OCR implementation. Including text recognition and detection.
Stars: ✭ 100 (+35.14%)
Mutual labels:  ocr, crnn
Captcha break
验证码识别
Stars: ✭ 2,268 (+2964.86%)
Mutual labels:  ocr, crnn
Crnn attention ocr chinese
CRNN with attention to do OCR,add Chinese recognition
Stars: ✭ 315 (+325.68%)
Mutual labels:  ocr, crnn
Sightseq
Computer vision tools for fairseq, containing PyTorch implementation of text recognition and object detection
Stars: ✭ 116 (+56.76%)
Mutual labels:  ocr, crnn
Printed-Chinese-Character-OCR
This is a Chinese Character ocr system based on Deep learning (VGG like CNN neural net work),this rep include trainning set generating,image preprocesing,NN model optimizing based on Keras high level NN framwork
Stars: ✭ 21 (-71.62%)
Mutual labels:  ocr, vgg
Crnn Mxnet Chinese Text Recognition
An implementation of CRNN (CNN+LSTM+warpCTC) on MxNet for chinese text recognition
Stars: ✭ 161 (+117.57%)
Mutual labels:  ocr, crnn
Paddleocr
Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
Stars: ✭ 18,084 (+24337.84%)
Mutual labels:  ocr, crnn
CRNN-OCR-lite
Lightweight CRNN for OCR (including handwritten text) with depthwise separable convolutions and spatial transformer module [keras+tf]
Stars: ✭ 130 (+75.68%)
Mutual labels:  ocr, crnn
Ocr.pytorch
A pure pytorch implemented ocr project including text detection and recognition
Stars: ✭ 196 (+164.86%)
Mutual labels:  ocr, crnn
Nkocr
🔎📝 This is a module to make specifics OCRs at food products and nutritional tables.
Stars: ✭ 15 (-79.73%)
Mutual labels:  ocr, east
Tr
Free Offline OCR 离线的中文文本检测+识别SDK
Stars: ✭ 598 (+708.11%)
Mutual labels:  ocr, crnn
CRNN.tf2
Convolutional Recurrent Neural Network(CRNN) for End-to-End Text Recognition - TensorFlow 2
Stars: ✭ 131 (+77.03%)
Mutual labels:  ocr, crnn
Crnn With Stn
implement CRNN in Keras with Spatial Transformer Network
Stars: ✭ 83 (+12.16%)
Mutual labels:  ocr, crnn
Tensorrtx
Implementation of popular deep learning networks with TensorRT network definition API
Stars: ✭ 3,456 (+4570.27%)
Mutual labels:  vgg, crnn
crnn.mxnet
crnn in mxnet.can train with chinese characters
Stars: ✭ 47 (-36.49%)
Mutual labels:  ocr, crnn
Crnn.pytorch
crnn实现水平和垂直方向中文文字识别, 提供在3w多个中文字符训练的水平识别和垂直识别的预训练模型; 欢迎关注,试用和反馈问题... ...
Stars: ✭ 145 (+95.95%)
Mutual labels:  ocr, crnn
Deep Text Recognition Benchmark
Text recognition (optical character recognition) with deep learning methods.
Stars: ✭ 2,665 (+3501.35%)
Mutual labels:  ocr, crnn

BankCard-Recognizer

Extracting numbers from bankcard, based on Deep Learning with Keras.

Including auto and manual location, number identification, with GUI.

中文BLOG: 点击此处链接

bankcard

Roadmap

  • cnn_blstm_ctc
  • EAST/manual locate
  • GUI

Requirements

Python == 3.6

pip install requirements

Environment

Windows10 x64, Anaconda, PyCharm 2018.3, NVIDIA GTX 1050.

Usage

  1. Download trained model, CRNN extracting-code:6eqw, EAST extracting-code:qiw5.
  2. Then put CRNN model into crnn/model, put EAST model into east/model.
  3. Run python demo.py.
  4. In GUI, press Load button to load one image about bankcard or load from dataset/test/.
  5. Press Identify button, it will start locate and do identification.
  6. Activate manual location by double click the Image view, then draw the interest area and press Identify.

Training

Prepare

Download my dataset, CRNN extracting-code:1jax, EAST extracting-code:pqba. and unzip dataset in ./dataset.

The structure of dataset looks like:

- dataset
  - /card          # for east
  - /crad_nbr      # for crnn
  - /test
  ...

for CRNN

  1. Run python crnn/preprocess.py.
  2. Run python crnn/run.py to train, and you can change some parameters in crnn/cfg.py.

for EAST

  1. My dataset is collecting from Internet: Baidu, Google, and thanks Kesci. It has been labeld with ICDAR 2015 format, you can see it in dataset/card/txt/. This tiny dataset is unable to cover all the situation, if you have rich one, it may perform better.
  2. If you would like to get more data, make sure data has been labeled, or you can take dataset/tagger.py to label it.
  3. Modify east/cfg.py, see default values.
  4. Run python east/preprocess.py. If process goes well, you'll see generated data like this:

act_gt

  1. Finally, python east/run.py.

About

cnn_blstm_ctc

The model I used, refer to CNN_RNN_CTC. The CNN part is using VGG, with BLSTM as RNN and CTC loss.

The model's preview:

model

EAST/manual locate

Auto locate is using one famous Text Detection Algorithm - EAST. See more details.

In this project, I prefer to use AdvancedEAST. It is an algorithm used for Scene-Image-Text-Detection, which is primarily based on EAST, and the significant improvement was also made, which make long text predictions more accurate. Original repo see Reference 1.

Also, training process is quiet quick and nice. As practical experience, img_size is better to be 384. The epoch_nbr is no longer important any more, for img_size like 384, usually training will early stop at epoch 20-22. But if you have a large dataset, try to play with these parameters.

This model's preview:

model

Manual locate is only available in GUI. Here're some performance in .gif:

manual-locate1

manual-locate2

GUI

Using QtDesigner to design UI, and PyQt5 to finish other works.

Statement

  1. The bankcard images are collecting from Internet, if any images make you feel uncomfortable, please contact me.
  2. If you have any issues, post it in Issues.

Reference

  1. Advanced EAST - https://github.com/huoyijie/AdvancedEAST
  2. EAST model - https://www.cnblogs.com/lillylin/p/9954981.html
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].