alicloud-ai-text-document-mind

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
Category: provider
Category: provider

Document Mind (DocMind) — Node.js SDK

Document Mind(DocMind)—— Node.js SDK

Use DocMind to extract document structure, text, and layout with async jobs.
使用DocMind通过异步任务提取文档结构、文本和布局。

Prerequisites

前提条件

  • Install SDKs:
    • npm install @alicloud/docmind-api20220711 @alicloud/tea-util @alicloud/credentials
  • Provide credentials via standard Alibaba Cloud env vars:
    • ALICLOUD_ACCESS_KEY_ID
    • ALICLOUD_ACCESS_KEY_SECRET
    • ALICLOUD_REGION_ID
      (optional default; if unset, choose the most reasonable region for the task or ask the user)
  • 安装SDK:
    • npm install @alicloud/docmind-api20220711 @alicloud/tea-util @alicloud/credentials
  • 通过标准阿里云环境变量提供凭证:
    • ALICLOUD_ACCESS_KEY_ID
    • ALICLOUD_ACCESS_KEY_SECRET
    • ALICLOUD_REGION_ID
      (可选默认值;如果未设置,为任务选择最合理的区域或询问用户)

Quickstart (submit + poll)

快速入门(提交+轮询)

js
const Client = require('@alicloud/docmind-api20220711');
const Credential = require('@alicloud/credentials');
const Util = require('@alicloud/tea-util');

const cred = new Credential.default();
const regionId = process.env.ALICLOUD_REGION_ID || 'cn-hangzhou'; // Example default; choose/ask if unset.
const client = new Client.default({
  endpoint: `docmind-api.${regionId}.aliyuncs.com`,
  accessKeyId: cred.credential.accessKeyId,
  accessKeySecret: cred.credential.accessKeySecret,
  type: 'access_key',
  regionId,
});

async function submitByUrl(fileUrl, fileName) {
  const req = new Client.SubmitDocStructureJobRequest();
  req.fileUrl = fileUrl;
  req.fileName = fileName;
  const resp = await client.submitDocStructureJob(req);
  return resp.body.data.id;
}

async function pollResult(jobId) {
  const req = new Client.GetDocStructureResultRequest();
  req.id = jobId;
  const resp = await client.getDocStructureResult(req);
  return resp.body;
}

(async () => {
  const jobId = await submitByUrl('https://example.com/example.pdf', 'example.pdf');
  console.log('jobId:', jobId);

  // Poll every 10s until completed.
  for (;;) {
    const result = await pollResult(jobId);
    if (result.completed) {
      console.log(result.status, result.data || result.message);
      break;
    }
    await new Promise((r) => setTimeout(r, 10000));
  }
})();
js
const Client = require('@alicloud/docmind-api20220711');
const Credential = require('@alicloud/credentials');
const Util = require('@alicloud/tea-util');

const cred = new Credential.default();
const regionId = process.env.ALICLOUD_REGION_ID || 'cn-hangzhou'; // Example default; choose/ask if unset.
const client = new Client.default({
  endpoint: `docmind-api.${regionId}.aliyuncs.com`,
  accessKeyId: cred.credential.accessKeyId,
  accessKeySecret: cred.credential.accessKeySecret,
  type: 'access_key',
  regionId,
});

async function submitByUrl(fileUrl, fileName) {
  const req = new Client.SubmitDocStructureJobRequest();
  req.fileUrl = fileUrl;
  req.fileName = fileName;
  const resp = await client.submitDocStructureJob(req);
  return resp.body.data.id;
}

async function pollResult(jobId) {
  const req = new Client.GetDocStructureResultRequest();
  req.id = jobId;
  const resp = await client.getDocStructureResult(req);
  return resp.body;
}

(async () => {
  const jobId = await submitByUrl('https://example.com/example.pdf', 'example.pdf');
  console.log('jobId:', jobId);

  // Poll every 10s until completed.
  for (;;) {
    const result = await pollResult(jobId);
    if (result.completed) {
      console.log(result.status, result.data || result.message);
      break;
    }
    await new Promise((r) => setTimeout(r, 10000));
  }
})();

Script quickstart

脚本快速入门

bash
DOCMIND_FILE_URL="https://example.com/example.pdf" \\
node skills/ai/text/alicloud-ai-text-document-mind/scripts/quickstart.js
Environment variables:
  • DOCMIND_FILE_URL
  • DOCMIND_FILE_NAME
    (optional)
  • DOCMIND_POLL_INTERVAL_MS
    (optional, default 10000)
  • DOCMIND_MAX_POLLS
    (optional, default 120)
bash
DOCMIND_FILE_URL="https://example.com/example.pdf" \\
node skills/ai/text/alicloud-ai-text-document-mind/scripts/quickstart.js
环境变量:
  • DOCMIND_FILE_URL
  • DOCMIND_FILE_NAME
    (可选)
  • DOCMIND_POLL_INTERVAL_MS
    (可选,默认值10000)
  • DOCMIND_MAX_POLLS
    (可选,默认值120)

Local file upload

本地文件上传

js
const fs = require('fs');
const advanceReq = new Client.SubmitDocStructureJobAdvanceRequest();
advanceReq.fileUrlObject = fs.createReadStream('./example.pdf');
advanceReq.fileName = 'example.pdf';
const runtime = new Util.RuntimeOptions({});
const resp = await client.submitDocStructureJobAdvance(advanceReq, runtime);
js
const fs = require('fs');
const advanceReq = new Client.SubmitDocStructureJobAdvanceRequest();
advanceReq.fileUrlObject = fs.createReadStream('./example.pdf');
advanceReq.fileName = 'example.pdf';
const runtime = new Util.RuntimeOptions({});
const resp = await client.submitDocStructureJobAdvance(advanceReq, runtime);

Notes for Claude Code/Codex

针对Claude Code/Codex的注意事项

  • DocMind is async: submit a job, then poll until
    completed=true
    .
  • Poll every ~10s; max processing window is 120 minutes.
  • Keep files publicly accessible when using URL submission.
  • DocMind是异步的:提交任务后,轮询直到
    completed=true
  • 每约10秒轮询一次;最长处理窗口为120分钟。
  • 使用URL提交时,确保文件可公开访问。

Error handling

错误处理

  • UrlNotLegal
    : URL not publicly accessible or malformed.
  • DocProcessing
    : job still running; keep polling.
  • Fail
    : check
    message
    and error code for root cause.
  • UrlNotLegal
    :URL无法公开访问或格式错误。
  • DocProcessing
    :任务仍在运行;继续轮询。
  • Fail
    :查看
    message
    和错误代码以确定根本原因。

References

参考资料

  • DocMind Node.js SDK:
    @alicloud/docmind-api20220711
  • Source list:
    references/sources.md
  • DocMind Node.js SDK:
    @alicloud/docmind-api20220711
  • 来源列表:
    references/sources.md