منصوبے کے بارے میں

PolyOCR Service ایک کثیر لسانی OCR، اختیاری ترجمہ، اور علیحدہ PaddleOCR-VL سروس ہے جو PaddleOCR 3.x اور FastAPI پر مبنی ہے۔ مصنف نے واضح کیا ہے کہ یہ ایک کمیونٹی پروجیکٹ ہے، نہ کہ PaddleOCR کا سرکاری جزو۔ صلاحیتیں اور حدود بنیادی OCR PaddleOCR 3.x کے predict() کو استعمال کرتا ہے، جو 3.x کے میپنگ/آبجیکٹ نتائج اور پرانے فہرست کے نتائج دونوں کے ساتھ مطابقت رکھتا ہے۔ یہ 78 زبانوں کو سپورٹ کرتا ہے، جس میں چینی، جاپانی، کورین، لاطینی، سیریلک، عربی، دیوناگری، تھائی، یونانی وغیرہ شامل ہیں، اور زبان کے کوڈ، انگریزی نام، اور چینی نام کی تین اقسام کے عرفی نام قبول کرتا ہے (جیسے fr / french / 法文)۔ زبان کی درخواست کی حد پر تصدیق کی جاتی ہے، نامعلوم زبان براہ راست 422 unsupported_language لوٹاتی ہے، اور ماڈل لوڈ ہونے تک انتظار نہیں کرنا پڑتا۔ تصویر کو انفرنس سے پہلے بائٹس کی تعداد، ڈی کوڈنگ کے نتائج، پکسلز کی تعداد، اور اعتماد کی حد کے ذریعے جانچا جاتا ہے؛ ہم آہنگ انفرنس تھریڈ پول میں انجام دیا جاتا ہے اور سیمیفور کے ذریعے ہم آہنگی محدود ہوتی ہے۔ ترجمے کی ان پٹ میں اندراجات کی تعداد اور کل حروف کی حد ہوتی ہے، اور فراہم کنندہ سے مطالبہ کیا جاتا ہے کہ واپس آنے والی تعداد ان پٹ کے برابر ہو۔ HTTP، تصدیق، درخواست کی جانچ، اور ڈومین کی خرابیاں یکساں error رسپانس ڈھانچہ استعمال کرتی ہیں۔ PaddleOCR-VL صرف اپ لوڈ کردہ مواد قبول کرتا ہے، URL کو مسترد کرتا ہے، علیحدہ API Key کی ضرورت ہوتی ہے، اور اپ لوڈ سائز کو محدود کرتا ہے۔ براؤزر صفحہ سرور کے نتائج کو textContent کے ذریعے پیش کرتا ہے، واپس آنے والے مواد کو HTML کے طور پر تشریح نہیں کرتا۔ انسٹالیشن اور چلانا Python 3.10، 3.11، 3.12 سپورٹ کرتا ہے اور CI کے ذریعے جانچا جاتا ہے۔ pip install -e ".[dev,ocr]" کے ذریعے انسٹال کریں، .env.example کو .env میں کاپی کریں اور API Key تبدیل کرنے کے بعد شروع کریں۔ کمانڈ لائن انٹری پوائنٹ ڈیفالٹ طور پر 127.0.0.1:8000 پر سنتا ہے، POLYOCR_HOST / POLYOCR_PORT سے کنفیگر کیا جا سکتا ہے؛ README خاص طور پر یاد دلاتا ہے کہ --host 0.0.0.0 تمام نیٹ ورک انٹرفیس پر ظاہر ہوتا ہے، کنٹینر میں یہ ضروری ہے، لیکن لیپ ٹاپ یا مشترکہ نیٹ ورک پر براہ راست چلانے سے LAN میں کوئی بھی شخص انسٹنس تک رسائی حاصل کر سکتا ہے۔ ویب صفحہ روٹ پاتھ پر ہے، API دستاویزات /docs پر ہیں۔ API جائزہ ہیلتھ چیک /v1/health تصدیق کی ضرورت نہیں رکھتا؛ /v1/languages زبان کے کوڈ، PaddleOCR زبان کوڈ، رسم الخط کے نظام، اور دستیاب عرفی نام لوٹاتا ہے۔ OCR درخواست /v1/ocr X-API-Key یا Bearer Token سپورٹ کرتی ہے، فارم فیلڈز میں file، language، score_threshold شامل ہیں، جواب معیاری زبان کوڈ کی بازگشت کرتا ہے اور items (text، score، bbox)، cost_ms، request_id، اور warnings شامل کرتا ہے۔ ترجمہ انٹرفیس /v2/translate texts اور target_language وصول کرتا ہے۔ ناکام جوابات یکساں error آبجیکٹ ہوتے ہیں، جس میں code، message، request_id شامل ہیں۔ موشن بلر انتباہ جب تصویر کے لاپلاسین ویریئنس کی قدر حد سے کم ہو (ڈیفالٹ 45.0، POLYOCR_BLUR_VARIANCE_FLOOR سے ایڈجسٹ کیا جا سکتا ہے) لیکن ماڈل پھر بھی اعلی اعتماد والا متن لوٹاتا ہے، جواب میں suspected_blur انتباہ شامل ہوتا ہے، detail میں لاپلاسین ویریئنس اور حد دی جاتی ہے۔ README اس کے محرک کی وضاحت کرتا ہے: موشن بلر ایسا متن لوٹاتا ہے جس کا اعتماد نارمل ہوتا ہے لیکن مواد غلط ہوتا ہے، کال کرنے والا پہلے فرق نہیں کر سکتا تھا، یہ انتباہ "فرق نہ کر پانے" کو "فرق کرنے کے قابل" میں بدل دیتا ہے۔ انتباہ صرف اس وقت جانچا جاتا ہے جب ماڈل واقعی متن لوٹاتا ہے، خالی نتائج پر انتباہ پیدا نہیں ہوتا۔ کنفگریشن آئٹمز دستاویزات میں تصدیق کا سوئچ اور API Key، CORS ذرائع، اپ لوڈ سائز کی حد (ڈیفالٹ 10MB)، ڈی کوڈنگ کے بعد پکسلز کی حد (ڈیفالٹ 25 ملین)، ہم آہنگ انفرنس کی تعداد (ڈیفالٹ 2)، OCR ورکر تھریڈز کی تعداد، بلر ویریئنس کی حد، ترجمے کے اندراجات اور حروف کی حد، OpenAI مطابقت پذیر ترجمہ سروس کی کلید/بیس/ماڈل، اور VL سروس کی علیحدہ کلید اور اپ لوڈ کی حد درج ہیں۔ تصدیق آن ہونے پر POLYOCR_API_KEY خالی ہونے پر بنیادی سروس شروع کرنے سے انکار کرتی ہے؛ VL سروس ہمیشہ POLYOCR_VL_API_KEY کی ضرورت رکھتی ہے؛ تصدیق شدہ CORS وائلڈ کارڈ ذرائع کی اجازت نہیں دیتا۔ Docker اور ٹیسٹنگ docker compose up --build کے ذریعے تعیناتی فراہم کی جاتی ہے، امیج Python 3.10 بیس پر فکس ہوتی ہے، غیر root صارف کے طور پر چلتی ہے اور ہیلتھ چیک فراہم کرتی ہے، پہلی OCR پر ماڈل ڈاؤن لوڈ ہوتا ہے، کیش Compose volume میں محفوظ ہوتی ہے۔ ٹیسٹ کے عمل میں ruff فارمیٹنگ اور چیک، pytest غیر انٹیگریشن ٹیسٹ، اور python -m build شامل ہیں؛ حقیقی OCR E2E کے لیے POLYOCR_RUN_OCR_E2E=1 کو واضح طور پر سیٹ کرنا ضروری ہے، ماڈل ڈاؤن لوڈ ہو سکتا ہے۔ CI صرف فوری ٹیسٹ چلاتا ہے جو ماڈل ڈاؤن لوڈ نہیں کرتے۔ بینچ مارک اور عملی نتائج زبان کی درستگی کا بینچ مارک زبان کے مطابق لیبل شدہ تصاویر کے ساتھ ہوتا ہے، ساتھ ہی exact (لائن بہ لائن مکمل مماثلت کا تناسب) اور cer (کردار کی غلطی کی شرح) رپورٹ کرتا ہے، اور یہ شناخت کی ترتیب سے متاثر نہیں ہوتا۔ مضبوطی کا بینچ مارک بلر، کمپریشن، گردش، چھوٹا کرنا، شور، روشنی/اندھیرے کا تضاد، اور موشن بلر، پرسپیکٹیو، غیر یکساں روشنی، سایہ، کاغذ کی ساخت جیسے شوٹنگ کی خرابیوں کا احاطہ کرتا ہے۔ README میں دیے گئے عملی نتائج یہ ہیں: گردش، پرسپیکٹیو، JPEG کمپریشن، روشنی/اندھیرے کا تضاد، غیر یکساں روشنی، سایہ، کاغذ کی ساخت تقریباً شناخت کو متاثر نہیں کرتے، مجموعی شوٹنگ منظر میں مکمل نمبر آتا ہے؛ اصل ناکامی صرف تفصیل کے نقصان کی قسم ہے، یعنی بلر تقریباً σ2 سے زیادہ، چھوٹا کرنا 25% سے کم۔ صرف ایک چیز جس سے ہوشیار رہنا ہے وہ موشن بلر ہے: 15px کی نقل مکانی پر اعتماد نارمل لیکن غلط متن لوٹتا ہے (Hello World → Heelco Ncotec)، 9px تک مکمل طور پر نارمل۔ preprocess پیرامیٹر لاگو نہیں کیا گیا: پانچ پری پروسیسنگ پائپ لائنیں تمام 17 خرابیوں پر خالص منفی فائدہ رکھتی ہیں، آٹو کنٹراسٹ نے 17 میں سے 11 کو نقصان پہنچایا، اس لیے preprocess=true 400 preprocess_unsupported لوٹاتا ہے، خاموشی سے نظر انداز نہیں کرتا۔ حقیقی تصویر کا بینچ مارک CORD-v2 (CC-BY-4.0، انسانی لفظ بہ لفظ تشریح کے ساتھ) استعمال کرتا ہے، مصنوعی تصاویر پر اوسط 0.975 exact، حقیقی تصاویر پر 0.841 لفظ کی بازیافت، README کہتا ہے کہ مصنوعی تصویر کا اسکور تقریباً 13 پوائنٹس زیادہ پر امید ہے۔ پری پروسیسنگ حقیقی تصاویر پر تین پائپ لائنوں کی اوسط مثبت ہے، لیکن bootstrap ٹیسٹ ظاہر کرتا ہے کہ پانچ پائپ لائنوں کے 95% اعتماد کے وقفے سب 0 کو عبور کرتے ہیں، کم سے کم p ویلیو 0.371، نتیجہ برقرار ہے کہ "اعداد و شمار کے لحاظ سے قابل شناخت فائدہ نہیں"۔ لائسنس Apache License 2.0 استعمال کرتا ہے، جو اپ اسٹریم PaddleOCR کے مطابق ہے، تیسرے فریق کی انتساب NOTICE میں درج ہے۔ PaddleOCR ماڈل رن ٹائم پر اپنے اصل تقسیم کنندہ سے ڈاؤن لوڈ ہوتے ہیں، اور ان کے اپنے لائسنس اور استعمال کی شرائط کے تابع ہیں۔