Anki Document Image Capture

Learning any language is challenging but rewarding. One of the most important aspects of learning any language is immersing yourself with vocabulary. Spaced repetition is one of the well-known techniques to aid in memorization with AnkiSRS being the leading memorization software.

To learn Arabic, I decided to memorize a frequency dictionary of the most common 5000 words. Unfortunately, reliable OCR software for parsing Arabic doesn’t exist so I developed a semi-automated screenshot generator to aid with vocabulary Anki card creation. 

The software is developed in Java to allow it to run on multiple platforms. This is just a quick minimum viable product written in a day and serves its purpose.

The overall process involves displaying the desired vocabulary definition, using the software to extract the desired images, and then exporting an Anki-readable configuration file used to import your newly created vocabulary flashcards. I created a YouTube video of the process.

Class Diagram

The software consists of three main parts: MainForm, CardManager, and ImagePanel. The MainForm is the control center for the entire process. Creating a new card in the MainForm sends an instruction to the ImagePanel class. The ImagePanel class (extends JPanel) instantly loads a screenshot of the desktop followed by actively monitoring mouse events to generate image clips from the screenshot. All images are returned to the MainForm for display and storage in the CardManager class. The CardManager class is a singleton that essentially mimics a deck of flashcards. Once ready, the information is exported in HTML style tags as required by the Anki software.

The software is really useful because it solves a real problem with there being a lot of room for more features and improvements. One of the main goals is to make the software significantly more automated and ready for everyday, general use.

Links: GitHub