Project Info
This project did not submit a demo video on Devpost.
Inspiration
Some of our teammates have family members who regularly get blood tests and other health related tests done. There are a lot of values and information on the reports which may take time to learn about.
What it does
Scans an input pdf and gives an analysis generated by Gemini AI
How we built it
We built it using React.js to code the website, Vite framework to develop the webpage, FastAPI for file uploads, Tesseract OCR for processing the lab documents uploaded to text, and Gemini API to provide analysis of the pdf report. In addition, we used MongoDB as our database for storing the user and lab report information. We deployed the frontend of our webpage using Vercel and the backend through Render. We also used Cloudflare for future scalability.
Challenges we ran into
Throughout this project, we ran into multiple issues mainly due to the steep learning curve as our team members had limited experience with MongoDB. Apart from that, we ran into issues while hosting the webpage on our domain, but we were able to resolve these issues with the help of online resources and LLMs such as Gemini and ChatGPT. We also ran into a lot of merge conflicts which required us to learn more about resolving conflicts and merging branches to deploy our code.
Accomplishments we're proud of
This project was very fun to develop. We learned a lot and also accomplished a lot. Our main accomplishment is being able to get accurate analysis of example blood reports. In addition, we were able to host our website on our domain after long hours of effort.
What we learned
In the process of developing the project, we learned a lot. We learned more about web development using React, we learned database management using MongoDB. In addition, we learned how to use Tesseract OCR for file processing. All in all, this hackathon was a great learning experience.
What's next
In the future, we would love to develop the backend better. We would also love to include different kinds of scans and report analyses on our website for more accurate and detailed analysis.
HealthPort AI
HealthPort AI is an intelligent medical report analysis tool that uses AI to analyze lab reports and provide detailed insights. The application features a modern, responsive interface with real-time analysis capabilities.
Features
- PDF and image upload support
- AI-powered analysis of medical reports
- Real-time progress tracking
- Modern, responsive UI
- Detailed analysis results
- Support for both text-based and scanned PDFs
Prerequisites
Before you begin, ensure you have the following installed:
For Windows:
-
Python 3.8+
- Download from python.org
- Make sure to check "Add Python to PATH" during installation
-
Tesseract OCR
- Download from GitHub
- During installation, make sure to:
- Check "Add to PATH"
- Note the installation path (default:
C:\Program Files\Tesseract-OCR)
-
Poppler
- Download from poppler releases
- Extract to a folder (e.g.,
C:\Program Files\poppler) - Add the bin directory to your PATH:
- Open System Properties > Advanced > Environment Variables
- Add
C:\Program Files\poppler\Library\binto Path
For macOS:
-
Python 3.8+
- Install using Homebrew:
brew install python
- Install using Homebrew:
-
Tesseract OCR
- Install using Homebrew:
brew install tesseract
- Install using Homebrew:
-
Poppler
- Install using Homebrew:
brew install poppler
- Install using Homebrew:
For Linux:
-
Python 3.8+
- Install using your package manager:
- Ubuntu/Debian:
sudo apt install python3 - Fedora:
sudo dnf install python3
- Ubuntu/Debian:
- Install using your package manager:
-
Tesseract OCR
- Ubuntu/Debian:
sudo apt install tesseract-ocr - Fedora:
sudo dnf install tesseract
- Ubuntu/Debian:
-
Poppler
- Ubuntu/Debian:
sudo apt install poppler-utils - Fedora:
sudo dnf install poppler-utils
- Ubuntu/Debian:
Installation
- Clone the repository:
git clone https://github.com/yourusername/HealthPort-AI.git
cd HealthPort-AI
- Set up the backend:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
- Set up the frontend:
cd ../frontend
npm install
- Create environment files:
Backend (create backend/.env):
GOOGLE_API_KEY=your_gemini_api_key
MONGO_URI=your_mongodb_uri
Frontend (create frontend/.env):
VITE_API_URL=http://localhost:8000
Running the Application
- Start the backend server:
cd backend
venv\Scripts\activate # source venv/bin/activate On Mac:
pip install -r requirements.txt #(if not already)
uvicorn main:app --reload
- Start the frontend development server:
cd frontend
pnpm i #(if not already)
pnpm run dev
- Open your browser and navigate to
http://localhost:5173
Usage
- Click the upload area or drag and drop a PDF file
- Wait for the analysis to complete
- View the detailed analysis results
- Download or share the results as needed
Troubleshooting
Common Issues
-
Tesseract not found
- Ensure Tesseract is installed and in your PATH
- Verify installation:
tesseract --version
-
Poppler not found
- Ensure Poppler is installed and in your PATH
- Verify installation:
pdftoppm --version
-
Python package installation issues
- Try upgrading pip:
python -m pip install --upgrade pip - Ensure you're using the correct Python version
- Try upgrading pip:
-
CORS errors
- Ensure both frontend and backend servers are running
- Check the API URL in frontend/.env
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Google Gemini API for AI analysis
- MongoDB for data storage
- FastAPI for backend framework
- React for frontend framework
Analysis
View
Metric
- 5
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- AWSClaimed
- Google GeminiClaimed
- MongoDBClaimed
- VercelClaimed
6 of 10 appear in the indexed code. 4 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
172 KB
Source files
30
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
rik102/HealthPort-AI
37 files · 4.5 MB · @ 2278271
Structure
Interface
17 files · 46%Screens, components and styles rendered to the user.
Application logic
8 files · 22%Domain rules, services and shared utilities.
Data & schema
1 file · 3%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- YAML59%
- JavaScript15%
- CSS14%
- Python10%
- Markdown2%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 14- @react-oauth/google
- axios
- react
- react-dom
- react-dropzone
- react-router-dom
- +8 more
backend/requirements.txt
pypi · 12- fastapi
- google-generativeai
- motor
- pdf2image
- Pillow
- pymongo[srv]
- PyPDF2
- pytesseract
- python-decouple
- python-dotenv
- python-multipart
- uvicorn
package.json
npm · 2- react-dropzone
- react-router-dom
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.