ai_qc/backend/visual_qc_apps/text_readability/app.py
nickviljoen 3fec052c12 Create frontend and backend folder structure for deployment
Organized the application into separate frontend and backend directories for cleaner deployment and better separation of concerns.

Frontend Directory (frontend/):
- index.html: Single-page web interface (renamed from web_ui.html)
- README.md: Frontend deployment guide
- Total size: ~113 KB (self-contained)
- Smart base path detection (works at / or /ai_qc/)
- No configuration changes required

Backend Directory (backend/):
- All Python files (api_server.py, llm_config.py, etc.)
- visual_qc_apps/: 33 QC check modules
- profiles/: 6 QC profile configurations
- brand_guidelines/: Reference asset storage
- config/: Environment configurations
- scripts/: Deployment automation
- uploads/, output/: Data directories
- requirements.txt, ai_qc.service, apache_config.conf
- Complete documentation

New Documentation:
- FOLDER_STRUCTURE.md: Comprehensive guide to new structure
- frontend/README.md: Frontend deployment instructions
- backend/BACKEND_README.md: Backend deployment guide

Deployment Mapping:
- frontend/ → /var/www/html/ai_qc/ (web root)
- backend/ → /opt/ai_qc/ (application directory)

Benefits:
- Clear separation of concerns
- Backend code not in web-accessible directory
- Independent frontend/backend updates
- Matches server's existing patterns (/opt/veo3, /opt/voice2text)
- Industry-standard architecture
- Easy to deploy and maintain

Original files preserved in root directory for reference.
Ready for production deployment following MIGRATION_GUIDE.md.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 11:55:53 +02:00

52 lines
No EOL
2.3 KiB
Python
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import sys
# Add parent directory to path to import shared modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from visual_qc_apps.flask_app_template import FlaskAppTemplate
class TextReadabilityApp(FlaskAppTemplate):
"""
Text Readability Check
"""
def __init__(self):
# Define the hardcoded prompt
prompt = """You are performing a visual qualitycontrol check on a Point of Sale (POS) advertisement. Your task is to determine whether the text on the advertisement is readable from the appropriate viewing distance:
• For large media (FloorStanding Display Units, posters, etc.): The text must be clearly readable from about 3 meters away.
• For smaller media (wobblers, shelf talkers, etc.): The text must be clearly readable from about 1 meter away.
STEPS TO EVALUATE:
1. Identify all text elements in the advertisement, excluding any terms and conditions.
2. Examine the text size, font style, and contrast with the background.
3. For each text element, assess whether it would be readable from the appropriate viewing distance.
4. Pay special attention to:
a. Text size - Is it large enough to be read from a distance?
b. Font choice - Is the font clear and easily readable?
c. Contrast - Does the text stand out clearly against its background?
d. Spacing - Is there sufficient spacing between letters, words, and lines?
5. Consider any potential obstacles to readability such as:
a. Decorative fonts that sacrifice legibility for style
b. Overlapping elements that obscure text
c. Poor contrast that makes text blend into the background
d. Text that is too small relative to viewing distance
YOUR OUTPUT:
• State whether the text elements "pass" or "fail" the readability checkpoint.
• If they fail, provide 12 concise recommendations for improving text readability.
• Include a JSON code block with these fields:
{
"text_readability": "Pass" or "Fail",
"readability_score": "High", "Medium", or "Low",
"recommendations": ["Recommendation 1", "Recommendation 2"] (only if "Fail")
}"""
# Initialize the Flask app with the prompt
super().__init__(__name__, prompt)
# Run the app if executed directly
if __name__ == "__main__":
app = TextReadabilityApp()
app.run(debug=True)