Skip to content

Simplify event discovery by extracting key details from posters. Snap a photo, and instantly access all the information you need or add to your calendar.

License

Notifications You must be signed in to change notification settings

laiyumi/EventSnap

Repository files navigation

EventSnap EventSnap Logo

EventSnap is a tool designed to simplify event discovery by extracting key details from posters or flyers in a single photo. Instead of scanning QR codes one by one, opening websites, and clicking registration links, all you need to do is snap a photo and upload it to EventSnap. The tool will automatically create an intuitive list of events, making it easier to review and register later.

Inspiration 💡

The inspiration for EventSnap came from my experience at a Harvard WECode (Women Engineers Code) Conference. I saw a board full of posters but was in a rush to get to a workshop and didn't have time to individually photograph them all. This experience led me to wonder if there could be a more efficient way to collect event details without compromising on the number of events discovered. And from there, EventSnap was born.

EventSnap aims to streamline the way we collect event information. Ultimately, I aim for users to take a photo of a full board, upload it to the platform, and have it automatically separate each poster, and convert it into a well-organized list.

How I Built It 🛠️

I propose a solution that employs AI and computer vision to analyse each poster and extract valuable information, providing users with an intuitive list to review and register for events at their convenience. The project development was divided into three phases:

Phase One: Building a Minimal Viable Product(Make it work!!)

  1. Build the skeleton of the system, connect front-end, back-end, and database.
  2. Enable basic features such as login, register, logout.
  3. Implement the ability of fetching and analyse information from a single poster.
  4. Enable the search funtion.

Phase Two: Implementing Photo Segmentation(The most challenging!!)

  1. Implement photo segmentation to divide the single upload into multiple individual posters.
  2. Fine-tune prompts to make the extraction results more stable and accurate.
  3. Explore different AI models, compare performance, and choose the most efficient.

Phase Three: Implementing and Revamping Supportive Features(Optimising User experience!!)

  1. Implement a calendar feature to enable events viewing in a calendar format and provide the option to download corresponding ics files.
  2. Improve API response times.
  3. Refine the app design.
  4. Implement a user profile management feature.

Challenges and Takeaways(Continuously Updated) 🚀

How to fine-tune the prompt for desired extraction results?

Extracting information consistently from images can be challenging, especially when stable and formatted outputs are required. My project focuses on extracting event-related information, such as event name, date, time, and location, using the GPT-4 Vision Preview model.

To achieve a clear and consistent output format, I decided to store the extracted data in a JSON file before sending it to the database. After several attempts, I found a prompt that consistently delivers data in the expected format. A paper titled The Dawn of LMMs: Preliminary Explorations with GPT-4V(ision) provided valuable prompt references that significantly improved the extraction process.

However, the model sometimes struggles with extracting URLs, especially from QR codes on posters. This occasionally results in null, n/a, or other unexpected values, adding uncertainty to the performance. Addressing this issue remains a work in progress.

How to Containerize My Application

As someone new to Docker who spent three days figuring out how to containerize my application, here are my key takeaways:

  1. Understand Containers: Before starting, it's important to really understand what a container is. Containers ensure the app runs consistently across different environments.

  2. Follow Examples: Use example projects from the Docker website to grasp the basics. These examples help me understand Docker's structure and test how it works with simple code, which is intuitive.

  3. Learn About Volumes and Mounting: In my experience, understanding volumes and mounting is especially important when the application involves a database. Volumes allow data to persist across container restarts and upgrades.

  4. Don’t Over-Rely on AI: While AI can provide helpful code snippets, it’s essential to understand what each line of code does before incorporating it into your project. You know your application best, so ensure you fully grasp the changes you’re making.

Accomplishements 🏆

  1. My first full-stack application outside of academia!
  2. Built it individually from the ground up, and it's inspired by a real-life experience.

How to Run

This project is a Dockerized version of my application.

Prerequisites

  • Docker

Running the Application

  1. Clone the repository:

    git clone https://github.com/laiyumi/EventSnap.git
    cd EventSnap
  2. Create openai folder and create api-key.txt, add your OpenAI API to the file.

    mkdir openai
    cd openai
    touch api-key.txt
  3. Build and run the Docker container:

    docker-compose up --build
  4. Access the application at http://localhost:8000.

About

Simplify event discovery by extracting key details from posters. Snap a photo, and instantly access all the information you need or add to your calendar.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published