{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:227ecbb1-8cfe-407b-abce-bb7d7604813f","metadata":{"timestamp":"2026-04-19T07:34:29Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"realpython/python_ocr_tutorial"}},"components":[{"type":"library","name":"ubuntu","version":"14.04","purl":"pkg:docker/ubuntu","properties":[{"name":"filePath","value":"Dockerfile"}]},{"type":"library","name":"Fabric","version":"==1.8.2","purl":"pkg:pypi/Fabric","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"Flask","version":"==0.10.1","purl":"pkg:pypi/Flask","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"Flask-SQLAlchemy","version":"==1.0","purl":"pkg:pypi/Flask-SQLAlchemy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"Flask-WTF","version":"==0.9.4","purl":"pkg:pypi/Flask-WTF","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"Jinja2","version":"==2.7.2","purl":"pkg:pypi/Jinja2","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"MarkupSafe","version":"==0.18","purl":"pkg:pypi/MarkupSafe","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"Pillow","version":"==2.7.0","purl":"pkg:pypi/Pillow","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"SQLAlchemy","version":"==0.9.3","purl":"pkg:pypi/SQLAlchemy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"WTForms","version":"==1.0.5","purl":"pkg:pypi/WTForms","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"Werkzeug","version":"==0.9.4","purl":"pkg:pypi/Werkzeug","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"argparse","version":"==1.2.1","purl":"pkg:pypi/argparse","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"coverage","version":"==3.7.1","purl":"pkg:pypi/coverage","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"ecdsa","version":"==0.10","purl":"pkg:pypi/ecdsa","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"itsdangerous","version":"==0.23","purl":"pkg:pypi/itsdangerous","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"mechanize","version":"==0.2.5","purl":"pkg:pypi/mechanize","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"nltk","version":"==3.0.0","purl":"pkg:pypi/nltk","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"paramiko","version":"==1.12.2","purl":"pkg:pypi/paramiko","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pycrypto","version":"==2.6.1","purl":"pkg:pypi/pycrypto","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pytesseract","version":"==0.1.5","purl":"pkg:pypi/pytesseract","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"requests","version":"==2.5.1","purl":"pkg:pypi/requests","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"wsgiref","version":"==0.1.2","purl":"pkg:pypi/wsgiref","properties":[{"name":"filePath","value":"requirements.txt"}]}]}