Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| اختبار API لمعالج النصوص | |
| """ | |
| import requests | |
| import json | |
| import time | |
| import logging | |
| # إعداد التسجيل | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| BASE_URL = "http://localhost:8000" | |
| def test_health_endpoint(): | |
| """اختبار نقطة فحص الحالة""" | |
| try: | |
| response = requests.get(f"{BASE_URL}/health") | |
| if response.status_code == 200: | |
| data = response.json() | |
| logger.info(f"✅ Health check: {data['message']}") | |
| return True | |
| else: | |
| logger.error(f"❌ Health check failed: {response.status_code}") | |
| return False | |
| except Exception as e: | |
| logger.error(f"❌ Health check error: {str(e)}") | |
| return False | |
| def test_text_correction(): | |
| """اختبار تصحيح النصوص""" | |
| try: | |
| data = { | |
| "text": "يحتاز غشاء الطبل تنتقل عظيمات السماء الاحتزازات", | |
| "reference_texts": [ | |
| "يهتز غشاء الطبل تنتقل عظيمات السمع الاهتزازات إلى النافذة البيضية", | |
| "يهتز غشاء النافذة البيضية يهتز اللمف الخارجي في القناة الدهليزية" | |
| ], | |
| "max_distance": 3, | |
| "threshold_freq": 1 | |
| } | |
| response = requests.post( | |
| f"{BASE_URL}/correct-text", | |
| json=data, | |
| headers={"Content-Type": "application/json"} | |
| ) | |
| if response.status_code == 200: | |
| result = response.json() | |
| logger.info(f"✅ Text correction successful") | |
| logger.info(f" Original: {result['data']['original_text']}") | |
| logger.info(f" Corrected: {result['data']['corrected_text']}") | |
| logger.info(f" Corrections: {result['data']['corrections_count']}") | |
| return True | |
| else: | |
| logger.error(f"❌ Text correction failed: {response.status_code}") | |
| logger.error(f" Response: {response.text}") | |
| return False | |
| except Exception as e: | |
| logger.error(f"❌ Text correction error: {str(e)}") | |
| return False | |
| def test_text_comparison(): | |
| """اختبار مقارنة النصوص""" | |
| try: | |
| data = { | |
| "reference_text": "يهتز غشاء الطبل تنتقل عظيمات السمع الاهتزازات إلى النافذة البيضية", | |
| "transcribed_text": "يحتاز غشاء الطبل تنتقل عظيمات السماء الاحتزازات إلى النافذة البيضية" | |
| } | |
| response = requests.post( | |
| f"{BASE_URL}/compare-texts", | |
| json=data, | |
| headers={"Content-Type": "application/json"} | |
| ) | |
| if response.status_code == 200: | |
| result = response.json() | |
| logger.info(f"✅ Text comparison successful") | |
| logger.info(f" WER: {result['data']['wer_percentage']}") | |
| logger.info(f" CER: {result['data']['cer_percentage']}") | |
| return True | |
| else: | |
| logger.error(f"❌ Text comparison failed: {response.status_code}") | |
| logger.error(f" Response: {response.text}") | |
| return False | |
| except Exception as e: | |
| logger.error(f"❌ Text comparison error: {str(e)}") | |
| return False | |
| def main(): | |
| """الدالة الرئيسية للاختبار""" | |
| logger.info("🚀 بدء اختبار API لمعالج النصوص") | |
| # انتظار تشغيل الخادم | |
| logger.info("انتظار تشغيل الخادم...") | |
| time.sleep(2) | |
| tests_passed = 0 | |
| total_tests = 3 | |
| # اختبار فحص الحالة | |
| if test_health_endpoint(): | |
| tests_passed += 1 | |
| # اختبار تصحيح النصوص | |
| if test_text_correction(): | |
| tests_passed += 1 | |
| # اختبار مقارنة النصوص | |
| if test_text_comparison(): | |
| tests_passed += 1 | |
| # عرض النتائج | |
| logger.info(f"\n📊 نتائج الاختبارات: {tests_passed}/{total_tests}") | |
| if tests_passed == total_tests: | |
| logger.info("✅ جميع اختبارات API نجحت!") | |
| return True | |
| else: | |
| logger.error("❌ فشلت بعض اختبارات API") | |
| return False | |
| if __name__ == "__main__": | |
| success = main() | |
| exit(0 if success else 1) | |