Education project at EPITA | Optical Character Recognition
We are a groupe composed of 4 students at EPITA, a french IT engineer school. We do an OCR from scratch and we are doing everything to achieve this project as sucessful as possible.
- "Charles SIMON-MEUNIER" https://draze.fr
- "Quentin FISCH" https://qfisch.fr
- "Maxime MADRAU" https://madrau.fr
- "Nathan AVÉ"
See the specificatons for this project here (french version here)
All this project is written is C language. Defense reports are written in TeX and could be found here
To compile our OCR project, ensure you have installed the SDL2 library as well as GTK on your machine.
Our Makefile allows you to compile by simply using the make command at the root of the project
➜ Lambda git:(master) ✗ make
gcc -c src/Detection/segmentation.c
gcc -c src/Tools/tools.c
gcc -c src/Detection/detect_char.c
gcc -c src/ImageTreatment/filters.c
gcc -c src/main.c
gcc -W -Wall -Wextra -Werror -std=c99 main.o segmentation.o tools.o detect_char.o filters.o -o Lambda -lSDL2 -lm
Our project got many commands. If you want to use our grayscale filter just execute the command line below (provided example image is "exampleGrayscale.bmp")
./Lambda grayscale "image-path" "destination"
Use our contrast filter on your image by using this command line (provided example image is "exampleContrast.bmp")
./Lambda contrast "image-path" "destination"
If you want to apply noise reduction before applying the contrast filter, precise 'true' after the "destination" parameter. It should look like this
./Lambda contrast "image-path" "destination" true
To try lines segmentation, use this command line
./Lambda line exampleLine.bmp
To try words segmentation, use this command line
./Lambda word exampleWord.bmp
To try characters segmentation, use this command line
./Lambda characters exampleChar.bmp
To finish, try our segmentation algorithm with this command line, only if you image has 1 column
./Lambda paragraph exampleParagraph.bmp
But if you image has more than 1 column, use this command
./Lambda column exampleColumn2.bmp
You can automatically rotate your image with a command (does not work well with an already rotated image)
./Lambda autorotate exampleRotate.bmp
You can open the project interface with this command
./Lambda
Then, you can select several options to indicate what type of treatment needs to be applied on your image. The output will be displayed in the rectangle below the program inputs.
If it appears to have an error such as a "segmentation fault (core dumped)", please try to restart the operation, maybe it was not prepared to received your insane text.
- Loading images and removing colors
- Detection and division into blocks, lines and characters
- Neural network able to learn XOR function
- Pre-treatment of image
- Saving and loading of neural network weights
- Dataset for learning
- Manipulation of files for saving results
- Complete neural network for recognizing characters
- Text reconstruction and saving
- User interface
- Spell checker
- Multi column