all projects

Content platform

Screenshot quality assessment

A content platform checked screenshots by hand to decide whether the text on them was readable, and the volume outgrew the team. A microservice now scores each image with OCR and image analysis and returns a good / fair / poor rating through a REST API.

manual reviewapi score

good / fair / poor

screenshot-quality · shipped 2024 · manual review → api score

The challenge

A content platform handles a steady stream of screenshots with text in them, and each one had to be checked by hand: is the text on this image readable or not? The volume outgrew what a person could review.

The service had to score legibility programmatically, return the result on a configurable scale, and hold up under batch load without blocking the caller.

The approach

The microservice accepts an image through a REST API and returns a quality rating of good, fair, or poor, on a configurable scale. Processing runs asynchronously: the caller submits an image, gets a request ID immediately, and picks up the finished rating later, so large batches never block anything.

The score blends two signals, what the OCR engine manages to read and the image’s own parameters. Either signal alone misjudges some images; together they track how a human rates legibility.

Architecture

  • Backend: Python, FastAPI, with Celery and RabbitMQ for asynchronous processing
  • OCR: EasyOCR for text recognition
  • Data: SQLite with Alembic for storing analysis results
  • Deployment: Docker Compose (FastAPI, Celery worker, RabbitMQ)

Results

Screenshot review that took a person’s time now happens on demand: send an image, get a score. The rating scale is configurable, so the platform decides where good ends and fair begins.