BrickPi Project
BrickPi Bookreader 2
A robot that reads real paper books aloud — it turns the pages with LEGO EV3 motors, photographs each page with the Pi Camera, converts the text with OCR, and speaks it via text-to-speech.
BrickPi Project
A robot that reads real paper books aloud — it turns the pages with LEGO EV3 motors, photographs each page with the Pi Camera, converts the text with OCR, and speaks it via text-to-speech.
The original BrickPi Bookreader could already read Kindle pages aloud, but the community wanted something that could handle a real paper book. The challenge: there was no good, readily available page-turning mechanism to copy. Even Google failed to turn up something simple enough.
After exploring approaches including LEGO Pneumatics and professional book scanners, the team settled on a custom mechanism built almost entirely from LEGO bricks — parts they had in abundance.
The result, BrickPi Bookreader 2, can read any real paper book aloud and automatically turn each page. The voice is a little robotic, but it gets the job done.
The page-turning mechanism uses two EV3 motors and a heavy LEGO wheel:
Connect the Pi Camera module via the ribbon cable. The camera ships with its focus fixed at infinity, so you'll need to manually adjust the focus for close-up use (the camera will be about 25 cm above the book). Several community guides cover how to do this safely without damaging the lens.
Test the camera with:
raspistill -o image.jpg
Mount the camera at the desired height above the book. Take a test image and check that the full page is captured and the text is legible. Readjust height and focus until the text is sharp.
Check that audio output works first:
aplay /usr/share/sounds/alsa/*
Then install eSpeak:
sudo apt-get install espeak
Test it:
espeak "hello"
sudo apt-get install tesseract-ocr
Take a photo of a printed page and test recognition:
tesseract image.jpg output
Open output.txt to review the result. If recognition is poor, try
rotating the image 90° and re-running Tesseract.
The structure that ended up being used looks somewhat like an AT-AT Walker from Star Wars — tall legs supporting a raised platform that holds both the BrickPi and the camera high enough above the book.
Key tips for the motor placement:
Use the test script in the GitHub repository to calibrate timing variables
(speed_roller, speed_arm, t1, t2)
until the page-turn reliably picks up exactly one page.
Once the camera, OCR, TTS engine, and LEGO platform are all working individually, download the main script from the BrickPi GitHub repository and run it:
git clone https://github.com/DexterInd/BrickPi_Python.git cd BrickPi_Python sudo python bookreader.py
Place an open book on the platform under the camera. The robot will photograph the page, read it aloud, then turn to the next page and repeat.