rishiproject / README.md
gaurinath's picture
Upload 8 files
41be7ed verified

Plant Identifier – Hyderabad Locator (Python)

This project lets you:

  1. Upload a plant JPG photo.
  2. Identify the plant using the Plant.id API (AI model).
  3. Show where the plant has been observed in Hyderabad (using the iNaturalist public API) and plot it on an interactive map.

It ships with a Streamlit UI (streamlit_app.py) so you can run everything locally in a few minutes.


Features

  • πŸ“· Image upload (JPG/JPEG/PNG) via Streamlit
  • πŸ€– AI recognition via Plant.id (top matches with confidence, scientific name, common names, wiki details when available)
  • πŸ“ Hyderabad occurrences via iNaturalist (observations plotted on a Folium map)
  • πŸ—ΊοΈ Interactive map embedded in the app
  • πŸ”‘ .env support for secrets

Note: You need a free or paid Plant.id API key. Create an account at plant.id and copy your key into .env as PLANT_ID_API_KEY.


File structure

plant-identifier-hyd/
β”œβ”€ app/
β”‚  β”œβ”€ streamlit_app.py        # Streamlit UI
β”‚  β”œβ”€ plant_id_client.py      # Plant.id API client
β”‚  β”œβ”€ location.py             # Hyderabad bbox + iNaturalist search
β”‚  β”œβ”€ utils.py                # Helpers (image, env)
β”‚  └─ static/
β”‚     └─ styles.css           # Optional extra styles for Streamlit
β”œβ”€ data/
β”‚  └─ sample_images/          # Put example photos here
β”œβ”€ tests/
β”‚  └─ test_smoke.py           # Minimal smoke test
β”œβ”€ .env.example               # Copy to .env and fill in your API key
β”œβ”€ requirements.txt
└─ README.md

Quickstart

  1. Clone or unzip this folder.
  2. Create a virtual environment (recommended):
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Set your API key: copy .env.example to .env and put your Plant.id key.
  2. Run the app:
streamlit run app/streamlit_app.py
  1. Open the printed local URL in your browser.

How it works

Plant identification

We send the uploaded image to Plant.id (/v3/identification) and request the top candidates. We show:

  • scientific name
  • common names
  • confidence score
  • a short description if available

Hyderabad locations

We query iNaturalist for recent observations within a Hyderabad bounding box. We then plot markers on a Folium map and embed it in Streamlit.

The map shows where people have reported observing the plant in Hyderabad. This does not guarantee the plant is wild there; it simply shows community observations.


Environment variables

Create a .env file in the project root:

PLANT_ID_API_KEY=your_plant_id_api_key_here

Notes & Limits

  • API quotas apply (Plant.id & iNaturalist).
  • Identification quality depends on your photo (focus, lighting, background).
  • iNaturalist observations depend on community contributionsβ€”some plants may have few or no reports in the Hyderabad area.

Testing

pytest -q

License

MIT. For learning and non-commercial demo use. Check Plant.id and iNaturalist terms of service for production use.