Tesseract OCR

  • Install Tesseract OCR with the following command:
$ sudo apt-get install tesseract-ocr
  • Install pytesseract with the following command:
$ sudo pip install pytesseract
$ sudo pip3 install pytesseract
  • Install python imaging:
$ sudo apt-get install python-imaging
  • Install imutils:
$ sudo pip3 install imutils
  • Install Pillow:
$ sudo pip3 install --upgrade pillow

Note

Upgrade pillow might give an error. In that case, first install pip as described in OpenCV.rst (after “Nu installeren we pip om python packages te installeren.”)

  • Reboot the Raspberry Pi.
$ sudo reboot
  • Download letsgodigital.traineddata:
$ wget -O letsgodigital.traineddata "https://github.com/arturaugusto/display_ocr/blob/master/letsgodigital/letsgodigital.traineddata?raw=true"
  • Put letsgodigital.traineddata in the right directory:
$ sudo mv letsgodigital.traineddata /usr/share/tesseract-ocr/tessdata
  • Make symbolic links with the installed packages and the virtual environment.
cd ~/.virtualenvs/rr/lib/python3.4/site-packages/
ln -s /usr/local/lib/python3.4/site-packages/imutils imutils
ln -s /usr/local/lib/python3.4/site-packages/PIL PIL
ln -s /usr/local/lib/python3.4/site-packages/pytesseract pytesseract

Note

At this point, you are finished with the installation of tesseract OCR! The following paragraphs give some more information about the training and preprocessing of the data.

Aan de slag

Wanneer je tesseract hebt geinstalleerd, is de stap snel gemaakt om een programmaatje te schrijven waarmee plaatjes waar cijfers op staan om te zetten in een string. Echter, voor deze opdracht willen we zeven-segment cijfers kunnen inlezen. Hiermee heeft tesseract wat meer moeite, omdat hij dit lettertype niet kent. Hiervoor moet een dataset getraind worden.

Training van de tesseract data

Tesseract is in staat om letters te lezen die hij “geleerd” heeft door middel van een trainingsdataset. Deze trainingsdatasets zitten in het mapje “tessdata”, en eindigen met .traineddata. Met nummers op een zeven segment display heeft tesseract moeite, omdat deze nummers nog niet getraind zijn. Het is mogelijk om een getrainde dataset van internet af te halen en in deze directory te plakken (bijvoorbeeld https://github.com/arturaugusto/display_ocr/tree/master/letsgodigital). Een andere optie is om zelf (door middel van scriptjes die op internet te vinden zijn) de data te trainen.

Voorbewerken van de plaatjes

Tesseract lijkt moeite te hebben met de “witte” stukken tussen de letters, wat kenmerkend is voor een zeven segment display. Het voorbewerken van de plaatjes lijkt de performance van van tesseract aanzienlijk te verbeteren, zoals een blur of een threshold (zie http://stackoverflow.com/questions/28935983/preprocessing-image-for-tesseract-ocr-with-opencv voor wat voorbeelden).