15 Sep 2017

ReadEx: an intelligent reading assistant - Do I really need one?


People are generally faced with short reading & attention spans. We often find people trying to read for long hours and yet gain little apart from false feeling of gratitude.

  • Have you ever felt that you were too dizzy while reading a chapter only to later realize that haven’t actually understood the crux of it?
  • Have you cherished easily getting away with reading assignments with no questionnaire to follow?
  • Have you encountered a question right from the text and yet haven’t been able to answer it?

If your answer to any one or more of the above questions was yes, then you are in dire need of our app! With this simple mobile application we aim to revolutionize the education sector by providing immense help in improving one’s reading habits.

With the advent of the social age, attention spans of individuals have significantly gone down. It has been observed in various studies that when people try to read for long hours, they seldom are able to grasp concepts. But having spent some time reading gives them a false sense of understanding it.

Our personal hardships and non-availability of a universal assisted reading platform led to making of ReadEx. We have often undergone intense reading exercises at IITD, and are faced with attention loss after a short while. ReadEx, an intelligent assistive reading application, tackles this problem at its core, while also providing a one stop solution for all reading hardships an avid reader has faced.

What does ReadEx offer?

Search Screen Reading Screen Merlin Flashcards

  • ReadEx helps users continuously gauge their understanding of the material by challenging them with questions generated in real time.
  • While you read through the material, Merlin (our intelligent chatbot) figures out your progress and crafts intelligent questions which pop up as counters at the side of your screen.
  • Not only this, ReadEx also tries to be your intelligent encyclopedia. You can scan part of any interesting article and it suggests you a few topics that are closely related to it. You can go ahead and tap the suggestion box to read the same.
  • It also comes along with an simple search engine (waiting to get sophisticated in future), which when given with a search query fetches an appropriate article for the topic.
  • Questions you fail to answer automatically move to the flashcards section which you can later revisit to revise concepts

How does ReadEx do it all under the hood?

The flowchart above serves as a layman explanation to the architecture of the comprehensive reading application. Current version of ReadEx requires the article, that is being read, to be in a format easily indexable by an application for text. ReadEx majorly exposes the following three fronts of reading documents or articles for people:

  • Search using keywords for an article on the web
  • Open a locally stored document (PDF, text etc)
  • Scan an interesting piece of article to read similar articles


All the above three methods of opening an article start at different ends of the pipeline and eventually coalesce to form a single workflow pipeline towards the end as indicated in the flowchart. For supporting a keyword search query, we do a simple lookup on Wikipedia using their APIs and retrieve an article for the user. In the second method of opening an article, which essentially involves opening a locally held document, the application first uploads it to the server if the text is not so simply indexable like in a PDF. At the server end we use OCR to process it and create a simple application-indexable text/html file that is displayed on the application end. The “scan a article” method of opening a new article uses photo OCR to extract text out of the scanned article which is then processed through the use of IBM Watson Natural Language APIs to detect concepts in it, which are then searched using an interface similar to that for the first part.

Opening an article is followed by the phase of question generation. When a reader scrolls through the text file, we use the position of the scroll to estimate the approximate line the user is likely to be reading. The application then takes up a piece of text (of around a paragraph) above that point and send it to a rest API on the server-end, which replies with questions pertaining to the topic. We used the wikitrivia question generation code for quick prototyping. This is a simple python application which uses a rule based mechanism to generate a blank in a given statement or a paragraph. The blanked statement then serves as our simple question. To generate the set of possible answers to the above generated question, we make use of the WordNet which is a large lexical database of English in layman terms. It groups nouns, verbs, adjectives and adverbs into sets of cognitive synonyms, each expressing a distinct concept. The web interface to the lexical database can be found here. The blanked word is searched over wordnet using the NLTK library and hyponyms of the hypernym of that words act as the set of all possible answers. This basically serves the purpose to find words of similar contextual meaning that fit right and complete the sentence.

The front end of this project is an Android app available here. The app is responsible for rendering all data received from the server and also generating and storing flashcards. Any document selected by the user is rendered in a WebView. This allows us to maintain the font styles of Wiki and PDF documents. It also allowed a simple way of enhancing text presentation to the user, by using HTML and CSS. The flashcards are created in the app for every question answered by the user. The questions and their correct answers are stored in a local SQLite database when the user interacts with the chat bot. This database is used to populate the flashcards. We use the cardslib library to render the flashcards.

Questions that are sent to the application from the server end and are then presented to the user via a chatbot interface. This has been primarily done to gamify and make fun the activity of reading so as to keep the interest amongst our readers alive. Number of questions available at any time appear to user as a number beside the action button on the application. When a user opens the chat, Merlin (the chatbot), asks questions as chat messages, answers to which can be given as the user chat messages.

Question incorrectly answered endup in the flash card section of our application. The flash card section has been made from the point of view of revising answers to questions user has previously made mistake in.

Where do we head with ReadEx?

At this stage, we may be too amateur to predict the true potential of ReadEx. But we believe it can definitely find widespread applications in the education sector. We predict if education in countries like India were to scale to their large population, personalised and intelligent applications like ReadEx have got a major role to play. ReadEx can be employed right from helping in quality question generation for instructors to helping people to gauge their understanding of material and even prepare for exams.

In the imminent future, we plan to make improvements in the question generation part and come up soon with a extremely user friendly prototype to verify our assumptions. The initial code written for ReadEx was a part of OpenEd AI Hackathon, 2017 and will remain open sourced for the community.

A short demo of the ReadEx in action can be found below:

Thank you note

We are thankful to the OpenEd AI team for providing us with this wonderful opportunity. We are also thankful to Mr. Anshul Bhagi, Co-Director of the OpenEd.ai and Miss Nikhila Ravi for being supportive and encouraging at all times.

About us

We are a set of four undergraduates pursuing Computer Science at IIT Delhi.