راهنمای اتصال به API

OCR API؛ خواندن متن PDF و تصویر، صفحه به صفحه با خروجی Markdown

مسیر POST /v1/ocr در وان ای آی (1ai) یک سند یا تصویر می‌گیرد و متن هر صفحه را جدا و به صورت Markdown برمی‌گرداند؛ برای وارد کردن متن فاکتور، قرارداد یا گزارش به برنامه‌ی خودتان یا آماده کردن سند برای RAG. سند را با نشانی عمومی یا data URL می‌فرستید و با فیلد pages می‌گویید کدام صفحه‌ها خوانده شوند. هزینه به ازای هر صفحه‌ی خوانده‌شده حساب می‌شود. این مسیر روی متن چاپی فارسی در تصویر و PDF بررسی شده است؛ دست‌خط و سند اسکن‌شده هنوز آزموده نشده‌اند.

چرا با 1ai

متن هر صفحه جدا

پاسخ برای هر صفحه یک markdown دارد، همراه با شماره و ابعاد صفحه.

هزینه به ازای صفحه‌ی خوانده‌شده

صفحه‌هایی که از انتهای سند بیرون می‌زنند هزینه‌ای ندارند؛ مصرف در usage.pages می‌آید.

نشانی یا data URL

PDF را با document_url و تصویر را با image_url بفرستید؛ هر دو نشانی http(s) یا data URL می‌پذیرند.

سند بلند، قدم به قدم

با pages صفحه‌های مشخصی را بخوانید و با truncated بفهمید سند ممکن است ادامه داشته باشد.

در چند قدم

  1. ۱

    کلید API بسازید

    از بخش توسعه‌دهندگان ← کلیدها یک کلید sk-1ai-… بسازید و در ONEAI_API_KEY نگه دارید.

  2. ۲

    سند را آماده کنید

    نشانی عمومی فایل را بردارید، یا فایل را به data URL با base64 تبدیل کنید.

  3. ۳

    درخواست بفرستید

    مدل و سند را به https://1ai.ir/v1/ocr بفرستید و در صورت نیاز pages را هم بگذارید.

  4. ۴

    متن را بردارید

    متن هر صفحه در pages[].markdown است. اگر truncated برگشت، صفحه‌های بعدی را با pages بخواهید.

مدل‌های OCR در API

همه‌ی مدل‌ها

Mistral OCR 4

میسترال
خواندن سند (OCR)

خواندن متن سند و تصویر، صفحه به صفحه

۰٫۶ اعتبار / هر صفحه سند
API

نمونه درخواست با curl

bash
curl https://1ai.ir/v1/ocr \
  -H "Authorization: Bearer $ONEAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistralai/mistral-ocr-4",
    "document": { "type": "document_url", "document_url": "https://example.com/invoice.pdf" },
    "pages": [0, 1]
  }'

برای تصویر، document را این‌طور بنویسید:

json
{ "type": "image_url", "image_url": "https://example.com/receipt.png" }

فرستادن فایل محلی با Python

python
# pip install requests
import base64, os, requests

with open("invoice.pdf", "rb") as f:
    data = base64.b64encode(f.read()).decode()

res = requests.post(
    "https://1ai.ir/v1/ocr",
    headers={"Authorization": f"Bearer {os.environ['ONEAI_API_KEY']}"},
    json={
        "model": "mistralai/mistral-ocr-4",
        "document": {"type": "document_url", "document_url": f"data:application/pdf;base64,{data}"},
    },
    timeout=300,
)
res.raise_for_status()
for page in res.json()["pages"]:
    print(page["markdown"])

بدنه‌ی JSON با data URL حداکثر ۲۵ مگابایت است؛ برای فایل بزرگ‌تر نشانی فایل را بفرستید.

قالب پاسخ

json
{
  "object": "ocr",
  "model": "mistralai/mistral-ocr-4",
  "pages": [
    { "index": 0, "markdown": "# فاکتور فروش\n\n…", "dimensions": { … }, "images": [] }
  ],
  "usage": { "pages": 1 }
}

usage.pages تعداد صفحه‌ی حساب‌شده است و اعتبار کسرشده در سرآیند x-1ai-credits می‌آید. اگر سند ممکن است ادامه داشته باشد، truncated: true هم در پاسخ هست.

فیلدهای درخواست

فیلدنوعتوضیح
modelرشتهشناسه‌ی مدل OCR
documentشیء{ "type": "document_url", "document_url": "…" } یا { "type": "image_url", "image_url": "…" }
pagesآرایه‌ی عدد، اختیاریشماره‌ی صفحه‌ها، از صفر
include_image_base64بولین، اختیاریتصویرهای داخل صفحه هم به صورت base64 برگردند

فیلدهای دیگر پذیرفته نمی‌شوند.

سند چندصفحه‌ای و truncated

تعداد صفحه‌های سند پیش از خواندن معلوم نیست. پس 1ai پیش از اجرا برای صفحه‌هایی که نام برده‌اید اعتبار رزرو می‌کند؛ اگر pages نفرستید، برای صفحه‌های اول سند تا سقف هر درخواست و تا جایی که موجودی اجازه دهد. در پایان فقط صفحه‌هایی که واقعاً خوانده شده‌اند حساب می‌شوند و بقیه برمی‌گردد.

اگر truncated: true برگشت، سند ممکن است ادامه داشته باشد؛ صفحه‌های بعدی را با pages بخواهید:

json
{ "pages": [100, 101, 102] }

فهرست کردن صفحه‌های بیشتر از سقف هر درخواست، خطای 400 too_many_pages می‌دهد.

نکته‌ها

  • این مسیر روی متن چاپی فارسی در تصویر و PDF بررسی شده است. دست‌خط و سند اسکن‌شده هنوز آزموده نشده‌اند؛ پیش از تکیه بر نتیجه، چند نمونه‌ی واقعی خودتان را امتحان کنید.
  • این مسیر استریم ندارد و کتابخانه‌ی openai متدی برای آن ندارد؛ با requests یا fetch بفرستید.
  • برای گرفتن فیلدهای تایپ‌دار از متن یا تصویر، مثل مبلغ و تاریخ فاکتور، Extraction API را ببینید.

سوالات متداول

متن فارسی را درست می‌خواند؟

روی متن چاپی فارسی در یک تصویر و یک PDF درست خوانده است. دست‌خط و سند اسکن‌شده هنوز آزموده نشده‌اند، پس برای این نوع سندها اول چند نمونه‌ی واقعی خودتان را امتحان کنید.

هزینه‌ی هر درخواست چطور حساب می‌شود؟

به ازای هر صفحه‌ای که واقعاً خوانده شده است. اگر صفحه‌ای را نام ببرید که از انتهای سند بیرون است، هزینه‌ای ندارد. قیمت هر مدل در صفحه‌ی همان مدل و اعتبار کسرشده در سرآیند x-1ai-credits است.

truncated یعنی چه؟

یعنی سند ممکن است صفحه‌های بیشتری داشته باشد که در این درخواست خوانده نشده‌اند. برای ادامه، شماره‌ی صفحه‌های بعدی را در pages بفرستید.

چه فرقی با Extraction API دارد؟

OCR متن هر صفحه را به صورت Markdown برمی‌گرداند. Extraction API فیلدهایی را که خودتان تعریف می‌کنید از متن یا تصویر بیرون می‌کشد. اگر متن کامل سند را می‌خواهید OCR مناسب است و اگر چند فیلد مشخص را، Extraction.

مطالب مرتبط

استفاده از API سازگار با OpenAI در 1ai: راهنمای عملی با Python، Node.js و cURL
توسعه‌دهندگان

استفاده از API سازگار با OpenAI در 1ai: راهنمای عملی با Python، Node.js و cURL

چطور پروژه‌ای را که با کتابخانه‌ی OpenAI نوشته شده، فقط با تغییر آدرس پایه و کلید به 1ai وصل کنید؛ با نمونه کد Python، Node.js و cURL، استریم، فهرست مدل‌ها و مدیریت خطا.

۴ دقیقه مطالعه
کلید API در 1ai: امنیت، محدودیت‌ها و کنترل هزینه
توسعه‌دهندگان

کلید API در 1ai: امنیت، محدودیت‌ها و کنترل هزینه

چطور کلیدهای API را امن نگه دارید و هزینه را مهار کنید: مدل‌های مجاز، سقف اعتبار ماهانه، محدودیت نرخ، تاریخ انقضا، کلیدهای تیمی و گزارش مصرف.

۴ دقیقه مطالعه
همه‌ی امکانات

Extraction API

فیلدهایی را که لازم دارید با نوعشان تعریف کنید و از متن یا تصویر، مقدار هر فیلد را با اطمینان آن بگیرید؛ فیلدی که در متن نیست null برمی‌گردد.

Rerank API

یک پرسش و فهرستی از متن‌ها بفرستید و همان متن‌ها را مرتب‌شده بر اساس ارتباط با پرسش، همراه با امتیاز هر کدام، پس بگیرید.

OpenAI SDK

کتابخانه‌ی رسمی openai را در Python و Node.js با تغییر آدرس پایه به 1ai وصل کنید و چت، فراخوانی ابزار، بردار متن، تصویر و صدا را از یک کلید بگیرید.

OCR API؛ خواندن متن PDF و تصویر، صفحه به صفحه با خروجی Markdown

یک PDF یا تصویر را با نشانی یا data URL بفرستید و متن هر صفحه را به صورت Markdown پس بگیرید؛ هزینه فقط به ازای صفحه‌هایی است که واقعاً خوانده شده‌اند.

ساخت کلید API