أوامر شراء بصيغ مختلفة من كل مورد؟
أداة تقرأ أمر الشراء — الوارد من العميل أو الصادر للمورد — وتستخرج رقمه وتاريخه وبنود الأصناف والكميات والأسعار كبيانات منظمة. تفيد قسم المشتريات الذي يستقبل أوامر بصيغ مختلفة من موردين متعددين، وهي اليوم في مرحلة تجريبية تعمل من المتصفح ومن الـAPI.
شغّلها أونلاين
شغّل هذه المهمة على خوادمنا باستخدام حسابك. الأدوات المجانية تعمل داخل متصفحك، أما هذه فتُخصم من رصيدك في KIT حسب السعر الموضّح أعلاه.
ما تستخرجه من أمر الشراء
تستخرج الأداة من أمر الشراء رقمه المرجعي وتاريخ إصداره، اسم المورد أو العميل، وقائمة الأصناف بكمياتها وأسعارها والمبلغ الإجمالي للأمر كاملًا. تتعامل مع الأمر المصوّر بالجوال وكذلك ملف PDF المُصدَر مباشرة من نظام آخر، وتقرأ الجدول الداخلي للأصناف كبنود منفصلة لا كتلة نص واحدة، فتربط كل صنف بكميته وسعره بدل خلطها معًا في سطر واحد غير مفهوم يصعب فرزه لاحقًا.
لماذا التنوع بين الموردين مشكلة
كل مورد يصمم أمر الشراء الخاص به بترتيب حقول مختلف: بعضهم يضع رقم الأمر أعلى الصفحة وبعضهم أسفلها، وبعضهم يستخدم جدولًا منظمًا وآخرون قائمة نصية بسيطة بلا حدود واضحة بين الأصناف. هذا التنوع يجعل الإدخال اليدوي بطيئًا ومعرضًا للخطأ عند نقل الأرقام من نموذج لآخر كل يوم. الأداة تتعرف على الحقول بمعناها لا بموضعها الثابت، فتستخرج البيانات نفسها بغض النظر عن تصميم النموذج المستخدَم من كل مورد.
حالتها التجريبية اليوم
الأداة تجريبية اليوم لأن تنوع تصاميم أوامر الشراء أكبر من تنوع الفواتير المعيارية التي تخضع لنسق أقرب للثابت في أغلب الأنظمة المحاسبية؛ ننشر هذا بوضوح بدل وعد بدقة كاملة، وننصح بمراجعة النتيجة قبل اعتمادها في نظام مشتريات حساس. الدقة ترتفع مع كل تحديث للمحرك اعتمادًا على أمثلة أكثر من نماذج مختلفة تُضاف باستمرار من قطاعات متنوعة تتعامل مع موردين متعددين.
السعر
$0.010 للطلب و$0.0575 لكل صفحة، أي أقل من $0.07 لأمر شراء من صفحة واحدة. لا اشتراك ولا رسوم خفية ولا حد أدنى للطلبات؛ الدفع عبر PayPal، ولمن يفضّل التواصل المباشر بدل الدفع الإلكتروني فواتساب والبريد الإلكتروني متاحان دائمًا للترتيب، ويرد عليك إنسان حقيقي يشرح تفاصيل الفوترة وخيارات الدفع المتاحة لك بحسب حجم استخدامك الشهري من أوامر الشراء.
حالات الاستخدام
توحيد أوامر شراء من عشرة موردين
قسم المشتريات في شركة الخليج الرقمية يستقبل أوامر شراء بصيغ مختلفة من موردين متعددين ويستخرج بياناتها موحدة عبر الـAPI قبل إدخالها في نظام تخطيط الموارد.
مطابقة سريعة قبل الشحن
مسؤول مستودع في مؤسسة النخيل للمقاولات يستخرج بيانات أمر الشراء الوارد ليقارن الكميات المطلوبة بما هو متوفر في المخزون قبل تجهيز الشحنة.
أرشفة أوامر شراء المشاريع القديمة
شركة الواحة للتجارة المحدودة تستخرج بيانات أوامر شراء ورقية من مشاريع سابقة لأرشفتها رقميًا بجانب الفواتير المرتبطة بها.
الأسئلة الشائعة
لماذا الأداة تجريبية؟
لأن تصميم أوامر الشراء يتفاوت كثيرًا بين الموردين، ودقة القراءة تتفاوت تبعًا لذلك؛ ننصح بمراجعة النتيجة في الاستخدام الحساس.
هل تتعرف على جدول الأصناف داخل الأمر؟
نعم، تستخرج كل صنف وكميته وسعره كبند منفصل لا كنص واحد متلاصق.
كم تكلفة معالجة أمر شراء من صفحة واحدة؟
أقل من $0.07 ($0.010 للطلب و$0.0575 للصفحة).
هل تُحفظ بيانات أمر الشراء بعد الاستخراج؟
لا، تُستخدم لإنتاج البيانات المطلوبة فقط ثم تُستبعد.
هل تعمل مع أمر شراء مصوّر بالجوال؟
نعم، بجانب ملف PDF الصادر مباشرة من نظام آخر.
هل يمكن إرسال عدة أوامر شراء دفعة واحدة عبر الـAPI؟
نعم، كل أمر يُعالَج كطلب مستقل فيمكن إرسال عشرات الطلبات معًا.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/ocr/purchase-order \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/purchase-order", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/purchase-order",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/purchase-order", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/purchase-order", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"input": "…"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.purchase_order",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
max_pages | 10 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
413 | input_too_large | حجم المدخلات يتجاوز الحد المسموح لهذه المهمة — قسّم الملف أو صغّره. |
422 | task_failed | لم تنجح معالجة المهمة، ولن تُحتسب عليك؛ أعد المحاولة أو راسلنا مباشرة. |