QWEN VL と Model Studio を使用して Function Compute に OCR をデプロイする

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/deploy-ocr-in-function-compute-using-qwen-vl-and-model-studio_602079?spm=a2c65.11461433.0.0.4ee35355MSxyUr)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

<div class=wrap-main-left-article markdown-body>
M Fakhri Darmawan（アリババクラウドインドネシア ソリューションアーキテクト）が執筆

現代のデータ駆動型社会において、光学式文字認識（OCR）は画像やスキャンされた文書からテキストを自動的に抽出する上で重要な役割を果たしています。請求書、レシート、フォーム、その他の種類の文書に関わる作業であっても、OCRは非構造化データを構造化され、機械で読み取り可能な形式に変換することでワークフローを大幅に効率化できます。このブログ記事では、QWEN VL、<a href=https://www.alibabacloud.com/product/modelstudio target=_blank>アリババクラウドのModel Studio</a>、および<a href=https://www.alibabacloud.com/product/function-compute target=_blank>Function Compute</a>を使用してOCRソリューションを展開する方法について説明します。

### ステップ1
この<a href=https://bailian.console.alibabacloud.com/?spm=a2c63.p38356.0.0.17a074a7kzMCVp#/home target=_blank>リンク</a>を使用して、無料でModel Studioを有効化してください。次にAPIキーを作成します。

### ステップ2
APIキーの作成と取得
1. ページの右上にある ![1](https://yqintl.alicdn.com/5ba5c2cd101146343f26ce332a7f9b16cac71814.png) にカーソルを合わせ、「API-KEY」を選択します。 ![2](https://yqintl.alicdn.com/96d00c28376ce11fbe719ee6f2a5a025f8b5b9d0.png)
2. 左側のナビゲーションペインで「すべてのAPIキー」または「マイAPIキー」を選択し、APIキーを表示または作成します。「マイAPIキーを作成」または「既存のAPIキーを表示」をクリックします。 ![3](https://yqintl.alicdn.com/11e32971b09e0728e546166e6f65c3b2df0d11dc.png)

**注意**

「すべてのAPIキー」ページは、アリババクラウドアカウントを使用している場合のみ利用可能です。アリババクラウドアカウントはすべてのRAMユーザーのAPIキーを取得できますが、RAMユーザーは自身のAPIキーしか取得できません。APIキーは安全に保管し、不正使用によるセキュリティリスクや財務損失を避けてください。APIキーは重要な資産です。必ず安全に保管してください。「操作」列の「削除」をクリックして既存のAPIキーを削除した場合、そのキーを使用してModel Studioサービスを利用することはできなくなります。このキーに関連付けられたすべてのアプリケーションやサービスは動作しなくなります。

### ステップ3
OCRサンプルアプリケーションのデプロイ
#### 前提条件

- nodejsバージョン22をインストール (<a href=https://linuxtldr.com/installing-node-js/ target=_blank>LinuxにNode.js v22をインストールするためのステップバイステップガイド</a>)
- npmをインストール
- serverless devをインストールおよび設定 (<a href=https://www.alibabacloud.com/help/en/functioncompute/fc-3-0/developer-reference/install-serverless-devs-and-docker?spm=a2c63.p38356.0.i3 target=_blank>クイックスタート - Function Compute - アリババクラウドドキュメントセンター</a>)

#### 手順
1. この<a href=https://github.com/fakhridarmawan/ocr/archive/refs/heads/master.zip target=_blank>GitHubリポジトリ</a>からサンプルコードをダウンロードします。
2. コードを解凍します。
3. `s.yaml`ファイル内のコードを変更します。yaml
edition: 3.0.0
name: fc3-example
access: default
resources:
  fcDemo:
    component: fc3
    props:
      region: ap-southeast-5
      handler: handler
      role: acs:ram::XXXX:role/aliyunfcdefaultrole # XXXXにメインアカウントUIDを入力
      disableOndemand: false
      description: OCR
      timeout: 120
      diskSize: 512
      internetAccess: true
      customRuntimeConfig:
        port: 9000
        command:
          - python3
          - app.py
      # logConfig: # slsでログプロジェクトを定義してFCのログを有効にする
      #   enableRequestMetrics: true
      #   enableInstanceMetrics: true
      #   logBeginRule: DefaultRegex
      #   project: serverless-ap-southeast-5-xxx
      #   logstore: default-logs
      functionName: ocr-qwen
      runtime: custom.debian10
      cpu: 1
      instanceConcurrency: 100
      memorySize: 1024
      environmentVariables:
        PATH: &gt;-
          /var/fc/lang/python3.10/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ruby/bin:/opt/bin:/code:/code/bin
        PYTHONPATH: /opt/python_disabled:/code/python_disabled:/code
        OSS_BUCKET: yourossbucket # あなたのOSSバケット名を入力
        TZ: Asia/Jakarta
        USER_PASSWORD:  # ログインページを有効にする場合に使用
        DASHSCOPE_API_KEY: sk-xxx # ここにAPIキーを入力するか、FC設定 -&gt; 環境変数に設定
        USER_NAME:  # ログインページを有効にする場合に使用
        OSS_ENDPOINT: https://oss-ap-southeast-1.aliyuncs.com # OSSシンガポールエンドポイント
        ENABLE_LOGIN: false
      code: ./ocr-qwen
      triggers:
        - triggerConfig:
            methods:
              - GET
              - POST
              - PUT
              - DELETE
            authType: anonymous
            disableURLInternet: false
          triggerName: httpTrigger
          description: 
          qualifier: LATEST
          triggerType: http

変更が必要なコード：

10行目：`role: acs:ram::XXXX:role/aliyunfcdefaultrole # XXXXにメインアカウントUIDを入力`

36行目：`OSS_BUCKET: yourossbucket # あなたのOSSバケット名を入力`

39行目：`DASHSCOPE_API_KEY: sk-xxx # ここにAPIキーを入力するか、FC設定 -&gt; 環境変数に設定`

4. サーバーレスデプロイを使用してコードをデプロイします：bash
s deploy s.yaml

デプロイ成功時の結果：bash
[2025-03-14 12:24:59][WARN][s_cli] rootユーザーとしてコマンドを実行することは推奨されません。(node:46363) [DEP0060] DeprecationWarning: `util._extend` APIは非推奨です。代わりにObject.assign()を使用してください。（詳細を表示するには`node --trace-deprecation ...`を使用してください）
⌛  [deploy] のステップ [fc3-example]
====================
Downloading[/v3/packages/fc3-domain/zipball/0.0.26]...
Download fc3-domain successfully
(node:46363) [DEP0040] DeprecationWarning: `punycode`モジュールは非推奨です。代わりにユーザーランドの代替を使用してください。ヒント：

`s info` を使用するとさらに詳細を確認できます。

✔ [fcDemo] completed (9.51s)

🚀  [deploy] の結果 [fc3-example]
====================
region:               ap-southeast-5
cpu:                  1
customRuntimeConfig: 
  command: 
    - python3
    - app.py
  port:    9000
description:          OCR
diskSize:             512
environmentVariables: 
  DASHSCOPE_API_KEY: sk-xxx
  ENABLE_LOGIN:      false
  OSS_BUCKET:        yourossbucket
  OSS_ENDPOINT
# ドメインの追加とアプリケーションのテスト

5. ![5](https://yqintl.alicdn.com/fbb795604c531d15950ce2573e6b82dbcc56b1f8.png)

6. ドメインを追加します。
   ![6](https://yqintl.alicdn.com/ff78ad546f6ff30f1f1d5a6aab03c494a1145366.png)  
   ドメインを入力し、関数とバージョンを選択してから作成します。

7. ドメインを設定し、Function Compute に CNAME を指すように構成します。
   ![7](https://yqintl.alicdn.com/48499d3c47e664402a2fdebd6247ad569a96569e.png)  

8. ドメインに移動してアプリケーションをテストします。
   ![8](https://yqintl.alicdn.com/429cd51efd354be15d17203666cb98722d71cb59.png)  

9. 自分の画像を使用し、プロンプトを指定して試してみてください。
   ![9](https://yqintl.alicdn.com/82eaf58099fd1a60a9b9c0014366246453deb3bd.png)  

Qwen-VL を OCR に使用し、Model Studio と Function Compute をサーバーレス実行環境として組み合わせることで、さまざまなビジネスニーズに合わせた拡張性があり、効率的でコスト効果の高い OCR ソリューションを構築できます。このアプローチは、Qwen-VL と Function Compute の強みを活用し、最小限のインフラ管理で堅牢な OCR システムを提供します。