طريقة استخراج جدول من صورة
أداة تستخرج الجداول من صورة أو صفحة مستند وتعيدها بيانات منظمة بصفوف وأعمدة، بدل نص متلاصق يصعب فرزه أو إعادة استخدامه. تصلح لجدول أسعار مصوّر، كشف مخزون، أو جدول بيانات داخل تقرير PDF طويل، وتعمل من المتصفح ومن الـAPI لمن يريد ربطها بنظامه الداخلي مباشرة.
شغّلها أونلاين
شغّل هذه المهمة على خوادمنا باستخدام حسابك. الأدوات المجانية تعمل داخل متصفحك، أما هذه فتُخصم من رصيدك في KIT حسب السعر الموضّح أعلاه.
ما نوع الجداول المدعومة
تتعرف الأداة على حدود الجدول حتى دون خطوط فاصلة واضحة، وتفرّق بين الصف والعمود اعتمادًا على المسافات والمحاذاة، وهذا يشمل جدول أسعار في نشرة، كشف مخزون مصورًا بالجوال، أو صفحة جدول بيانات داخل ملف PDF طويل. تُقبل الصور والصفحات حتى 25 MB، وتُقرأ الأرقام والنصوص العربية والإنجليزية معًا داخل الخلايا نفسها دون خلط ترتيبها. حتى الجدول المائل قليلًا في الصورة أو الملتقط من زاوية غير مثالية يُقرأ بدقة معقولة، وكذلك الجدول الذي يمتد على عرض الصفحة كاملة بعشرات الأعمدة.
شكل النتيجة
تعيد الأداة الجدول بصفوف وأعمدة واضحة الحدود بدل كتلة نص واحدة، فيسهل لصقها مباشرة في جدول بيانات مثل Excel أو معالجتها برمجيًا عبر الـAPI ضمن نظام آخر يستقبل البيانات تلقائيًا. حين يحتوي الجدول على خلايا مدمجة أو عناوين متعددة الأسطر، تحافظ الأداة على العلاقة بين العنوان وقيمته قدر الإمكان بدل بعثرة البيانات في أعمدة خاطئة. الخلايا الفارغة تبقى فارغة في النتيجة بدل حشوها بقيم مخمّنة لا أساس لها، وهو ما يحافظ على أمانة البيانات الأصلية.
التكلفة لكل صفحة
$0.010 للطلب و$0.0575 لكل صفحة تُعالَج؛ جدول أسعار من صفحة واحدة يكلف أقل من $0.07. لا فرق في السعر بين جدول بسيط من عمودين وآخر معقد من عشرين عمودًا، فالتكلفة معلنة سلفًا بغض النظر عن كثافة البيانات أو عدد الصفوف داخل الجدول. الدفع عبر PayPal، أو التواصل معنا مباشرة عبر واتساب أو البريد لترتيب آخر إن كان لديك حجم كبير من الجداول شهريًا يحتاج تسعيرًا خاصًا.
تحسين دقة القراءة
أفضل دقة تأتي من صورة واضحة وحدود جدول ظاهرة، حتى لو خفيفة؛ تجنّب التقاط الجدول من زاوية حادة أو تحت إضاءة تُلقي ظلًا على نصفه فتُخفي أرقامًا كاملة عن العين والمحرك معًا. إن كان الجدول ممتدًا على أكثر من صفحة، فأرسل كل صفحة كطلب منفصل لتحافظ على دقة كل جزء منه؛ دمج صفحتين في صورة واحدة يقلل الدقة عادة بدل أن يزيدها، خصوصًا عند التقاء حواف الصفحتين في منتصف الصورة.
حالات الاستخدام
جدول أسعار موردين يدخل النظام مباشرة
شركة الخليج الرقمية تستلم جداول أسعار من موردين بصيغة صورة أو PDF، وتستخرج بياناتها المنظمة عبر الـAPI بدل إعادة كتابتها يدويًا في نظام المشتريات.
جرد مخزون مصوّر بالجوال
أمين مخزن في مؤسسة النخيل للمقاولات يصوّر كشف الجرد الورقي بجدول الأصناف والكميات ويستخرجه كبيانات منظمة قبل رفعها إلى نظام المستودعات.
جدول مقارنة من تقرير حكومي
باحث يستخرج جدول إحصائيات من تقرير رسمي بصيغة PDF ليعيد استخدام أرقامه في عرض تقديمي داخلي.
الأسئلة الشائعة
هل يستخرج الجدول إلى Excel مباشرة؟
يعيد بيانات منظمة بصفوف وأعمدة جاهزة للصق في Excel أو أي جدول بيانات آخر، وليس ملف Excel جاهزًا بحد ذاته.
هل يتعامل مع جدول بلا خطوط فاصلة واضحة؟
نعم، يعتمد على المحاذاة والمسافات لتمييز الصفوف والأعمدة حتى بلا خطوط ظاهرة تمامًا.
كم تكلفة استخراج جدول من صفحة واحدة؟
أقل من $0.07 ($0.010 للطلب و$0.0575 للصفحة).
هل يدعم الجدول العربي والإنجليزي معًا في الخلايا نفسها؟
نعم، يقرأ اللغتين داخل الجدول الواحد دون خلط ترتيب الأعمدة.
ماذا يحدث لجدول ممتد على عدة صفحات؟
تُرسل كل صفحة كطلب منفصل، وتُعالَج كل صفحة على حدة لأدق نتيجة.
هل الملف الذي أرسله يبقى محفوظًا؟
لا، يُستخدم لإنتاج البيانات المطلوبة فقط ثم يُستبعد بعد اكتمال الطلب.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/ocr/table \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/table", {
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/table",
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/table", 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/table", 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.table",
"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 | لم تنجح معالجة المهمة، ولن تُحتسب عليك؛ أعد المحاولة أو راسلنا مباشرة. |