detect license plate and read text on it
Alternatives To License_plate_recognition
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Multi Model Server9212424 days ago5May 16, 201992apache-2.0Java
Multi Model Server is a tool for serving neural net models for inference
a year agogpl-3.0Java
Face recognition based on neural network and machine learning
Neural Style Server30
7 years ago2HTML
A web server frontend for
Re Verb21
2 years ago8mitPython
speaker diarization system using an LSTM
Re Verb16
4 years ago3mitPython
speaker diarization system using an LSTM
a year ago8June 17, 2021apache-2.0Go
detect license plate and read text on it
3 years ago9apache-2.0Python
ZeVision - Computer vision API based on deep learning
Neuralm Server8
a year ago14mitC#
Neuralm Server is the backend of the neuralm project. It creates and mutates the neural networks and sends them to the client
Facial Login Web6
5 years ago1mitJavaScript
Web based facial Authentication system with flask server
Pick And Sort Robot4
3 years agomitPython
The robot can position it self within a three dimensional coordinate system. Locating and sorting of objects by the use of computer vision and Convolutional Neural Network. Fast and accurate, and will work in robust environments.
Alternatives To License_plate_recognition
Select To Compare

Alternative Project Comparisons

License Plate Recognition with go-darknet GoDoc Sourcegraph Go Report Card GitHub tag

Table of Contents


This is a gRPC server which accepts image and can make license plate recognition (using YOLOv3 or YOLOv4 neural network).

Server tries to find license plate at first. Then it does OCR (if it's possible).

Neural networks were trained on dataset of russian license plates. But you can train it on another dataset - read about process here AlexeyAB/darknet

Darknet architecture for finding license plates - Yolo V3

Darknet architecture for doing OCR stuff - Yolo V4

No OpenCV installation is needed!

gRPC server accepts this data struct accordion to ODaM specification:

message CamInfo{
    string cam_id = 1; // id of camera (just to identify client app)
    int64 timestamp = 2; // timestamp of vehicle fixation (on client app)
    bytes image = 3; // bytes of full image in PNG-format
    Detection detection = 4; // BBox of detected vehicle (region of interest where License Plate Recognition is needed)
    VirtualLineInfo virtual_line = 5; // Line which detected object has been crossed (not necessary field, but helpfull for real-time detection on road traffic)
message Detection{
    int32 x_left = 1;
    int32 y_top = 2;
    int32 height = 3;
    int32 width = 4;
message VirtualLineInfo{
    int32 id = 1;
    int32 left_x = 2;
    int32 left_y = 3;
    int32 right_x = 4;
    int32 right_y = 5;


Please follow instructions from go-darknet. There you will know how to install AlexeyAB's darknet and Go-binding for it.


Get source code

Notice: we are using Go-modules

go get

Download weights and configuration

Notice: please read source code of *.sh script before downloading. This script MAY NOT fit yours needs.

cd cmd/
chmod +x

Custom Handler

Do not forget (if needed) to implement AfterFunc

Example is below:

rs := &RecognitionServer{
    AfterFunction: doSomeStuff,
func doSomeStuff(data *PlateInfo, fileContents []byte) error {
		If you want, you can implement this function by yourself (and you can wrap this function also)
		Default behaviour: do nothing.
	return nil


Start server

  • Navigate to folder with server application source code
    cd cmd/server
  • Build source code of server application to executable
    go build -o recognition_server main.go
  • Run server application
    ./recognition_server --cfg conf.toml
    Note: Please see conf.toml description for correct usage

Test Client-Server

Notice: server should be started

  • Navigate to folder with server application source code

    cd cmd/client
  • Build source code of client application to executable

    go build -o client_app main.go
  • Run client application

    ./client_app --host=localhost --port=50051 --file=sample.jpg -x 0 -y 0 --width=4032 --height=3024
  • Check, if server can handle error (like negative height parameter):

    ./client_app --host=localhost --port=50051 --file=sample.jpg -x 0 -y 0 --width=42 --height=-24
  • On server's side there will be output something like this:

    2020/06/25 15:31:57
    License plate #0:
        Text: M288HO199
        Deviation (for detected symbols): 1.808632
        Rectangle's borders: (295,1057)-(608,1204)
    License plate #1:
        Text: A100CX777
        Deviation (for detected symbols): 2.295539
        Rectangle's borders: (2049,1384)-(2582,1618)
    Elapsed to find plate and read symbols: 372.108605ms
  • On server's side the directory './detected' will appear also. Detected license plates will be stored there.

Popular Server Projects
Popular Neural Network Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Neural Network
Object Detection