Open source · MIT · built with Next.js

Detect every cabin on any deck plan

Upload a cruise deck-plan image. DeckScan highlights cabin rectangles, reads their numbers with OCR, and surfaces each cabin's fill colour — no OpenCV, no GPU.

Royal-Deck.png

Features

Built to find every cabin

A small, dependency-light detection stack that runs entirely in a Next.js app.

Palette rectangle scan

Finds repeated cabin rectangles by clustering recurring fill colours — no OpenCV, no browser GPU tricks required.

Neutral cabin recovery

A second detector pass rescues the tricky white and light-grey cabins that colour clustering alone tends to miss.

Whole-image OCR

One Tesseract pass reads every label at once — no slow OCR-per-cabin loop.

OCR-seeded recovery

Stray cabin numbers seed extra rectangles the colour pass overlooked, so nothing slips through.

Fill-colour readout

Each detection surfaces its cabin's fill colour, making categories easy to skim at a glance.

Compact review UI

Inspect detections on the image, then review the active cabin in a small, presentation-friendly side rail.

How it works

One scan, six steps

Upload a deck, run a single scan, and review every detected cabin.

  1. 01

    Load a deck

    Drop in your own cruise deck-plan image or load a bundled sample deck to start.

  2. 02

    Palette scan

    Cluster recurring fill colours to find the repeated cabin rectangles across the plan.

  3. 03

    Neutral recovery

    A second pass recovers light and white cabins that pure colour clustering misses.

  4. 04

    OCR pass

    Run Tesseract once over the whole image to read every cabin label in one shot.

  5. 05

    Seeded recovery

    Use detected numbers to seed extra rectangles the colour pass overlooked.

  6. 06

    Review

    Inspect detections on the image and the active cabin's data in the side rail.

Why this repo

Light on deps,
heavy on results

A pragmatic deck scanner that solves the messy parts of cabin detection without reaching for a full computer-vision stack.

0 OpenCV / GPU deps
1 OCR pass per deck
2 Detection passes
100% Runs in the browser app
01

No heavy CV stack

Finds repeated cabin rectangles without OpenCV or browser GPU tricks — just colour clustering and plain JavaScript.

02

Handles the hard cabins

A dedicated neutral-recovery pass picks up the white and light cabins that single-pass detectors quietly drop.

03

OCR that scales

Whole-image OCR plus OCR-seeded recovery replaces the expensive OCR-per-cabin loop most scanners fall back on.

Tech stack

Boring tools, done well

Image work with Jimp, OCR with Tesseract.js, all wrapped in a small Next.js app.

Next.js
React
Jimp
Tesseract
Tailwind
Node.js
ESLint
JavaScript

No build-time models, no native bindings — just npm install.

Open source

Clone it, run it

DeckScan is a for-fun open-source project. Pull the repo, load a sample deck, and run a scan in under a minute.

  • Two bundled sample decks to try instantly
  • Runs locally on localhost:3000
  • Small, readable, presentation-friendly code
  • Open source — fork it freely
Star on GitHub
Danilaa1 / cabin-detection Public

Scans cruise deck-plan images, highlights cabin rectangles, reads cabin numbers with OCR, and surfaces each cabin's fill colour.

nextjsocrtesseract-jsimage-processingjimp

Scan a deck plan
in one click

Open source, free, and built for fun. Clone the repo and try it on the bundled sample decks.