Skip to content

Education project at EPITA | Optical Character Recognition

Notifications You must be signed in to change notification settings

Bitarrays/Lambda

Repository files navigation

Lambda

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.

Table of Contents

Team Members

The project

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

Compilation

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

Execution

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.

Features

  • 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