# json2ankicards A comprehensive toolkit that offers: - Conversion of JSON files into Anki deck packages (.apkg files). - Conversion of image files in a directory to a text file using Optical Character Recognition (OCR). - Generation of JSON format question-answer pairs from textual content using OpenAI's GPT-3 model. - **RESTful API endpoint to upload and convert multiple images directly into an Anki deck package.** ## Features - Converts a JSON file with questions and answers into an Anki deck package. - Converts image files from a specified directory to a single text file using OCR. - Generates JSON formatted question-answer pairs based on a given text content, ideal for studying or summarization. - For JSON: there are only two columns in the JSON file, separated by the first comma encountered. - JSON files should have a "Front" column for questions and a "Back" column for answers. - **API endpoint that accepts multiple image uploads, processes them through the pipeline, and returns an Anki deck package.** ## Installation 1. Clone this repository: ```bash git clone https://git.rudefox.io/bj/anki-json2ankicards.git cd json2ankicards ``` 2. Set up a virtual environment and activate it: ```bash python3 -m venv venv source venv/bin/activate ``` 3. Install the required packages: ```bash pip install -r requirements.txt ``` ## Configuration Before using the `text2jsondeck.py` script, ensure that you have set the `OPENAI_API_KEY` environment variable: ```bash export OPENAI_API_KEY=your_openai_api_key_here ``` Remember to replace `your_openai_api_key_here` with your actual OpenAI API key. ## Usage ### **REST API Usage** To start the server: ```bash python server.py ``` #### Endpoint: `/deck-from-images` **Method**: POST **Description**: Accepts multiple image uploads, processes them through the pipeline, and returns an Anki deck package. **Body**: - form-data with key `image` and multiple image files as values. **Response**: - An `output.apkg` file ready for import into Anki. ### Pipeline Usage To convert a directory of images directly to an Anki deck package: ```bash python pipeline.py /path/to/your/image_directory/ ``` This will process the images, extract text, convert text to a set of questions and answers in JSON format, and then produce an `output.apkg` file ready for import into Anki. ### Image to Text Conversion To convert images from a directory to a single text file using OCR: ```bash python images2text.py /path/to/your/image_directory/ ``` This will produce a `final.txt` file which contains the text extracted from the images. #### Supported Image Formats Currently supported formats for the images are: `.png`, `.jpg`, and `.jpeg`. ### Text to JSON Deck Generation To generate a JSON deck of question-answer pairs from a given text file: ```bash python text2jsondeck.py /path/to/your/textfile.txt ``` This will analyze the content of the given text file and generate a corresponding `_deck.json` file with questions and answers that capture the main points and themes of the text. **Note:** This script uses the OpenAI GPT-3 model. Ensure you have the necessary API key and OpenAI Python client installed. ### JSON to Anki Conversion To convert a JSON file into an Anki deck package: ```bash python json2ankicards.py /path/to/your/jsonfile.json output.apkg ``` This will produce an `output.apkg` file which can then be imported into Anki. #### JSON Format The JSON file should follow this format: ``` Front,Back Your question here,Your answer here Another question,list of: answer1, answer2, answer3 ... ``` **Note:** If your answers contain commas, they will be considered as part of the answer. Only the first comma is used to separate the question from the answer.