1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java OCR ライブラリを使用して画像を Excel に変換するツールを構築する

Posted at

ステップ1: 画像をExcelに変換するための認証

Original Post: Convert Image to Excel with OCR Library

コンソールから取得できる次のコードの publicKey フィールドと secretKey フィールドを置き換える必要があります。その後、認証後に accessToken と検証関連の情報を取得できます。AccessToken は 12 時間後に期限切れになります。画像から Excel への変換 API を呼び出すときは、このトークンをリクエスト ヘッダーに含める必要があります: Authorization: Bearer {accessToken}。

import java.io.*;
import okhttp3.*;
public class main {
  public static void main(String []args) throws IOException{
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = RequestBody.create(mediaType, "{\n    \"publicKey\": \"{{public_key}}\",\n    \"secretKey\": \"{{secret_key}}\"\n}");
    Request request = new Request.Builder()
      .url("https://api-server.compdf.com/server/v1/oauth/token")
      .method("POST", body)
      .build();
    Response response = client.newCall(request).execute();
  }

必要なパラメータ:

画像を Excel に変換するときに正確な変換を行うには、次のパラメータをインポートしてください。インポートしない場合は、デフォルトのオプションが適用されます。

  • contentOptions : コンテンツを抽出するオプション (1: テキストのみ、2: 表のみ、3: すべてのコンテンツ) デフォルトは 2 です。
  • worksheetOptions : ワークシートを作成するためのオプション (1: テーブルごとにシートを作成する、2: ページごとにシートを作成する、3: ファイルごとに 1 つのシートを作成する) デフォルトは 1 です。
  • isAllowOcr : OCR を開くことを許可するかどうか (1: はい、0: いいえ)、デフォルトは 0。
  • isContainOcrBg : OCR を有効にした後、背景画像を保持するかどうか (1: はい、0: いいえ) デフォルトは 0。
  • isOnlyAiTable : AI がテーブルを認識できるようにするかどうか (1: はい、0: いいえ) デフォルトは 0。

画像を Excel に変換するパラメータを適用する方法:

{
  "contentOptions": "2",
  "worksheetOptions": "1",
  "isAllowOcr": "0",
  "isContainOcrBg": "0",
  "isOnlyAiTable": "0"
}

ステップ2: タスクを作成する

前の手順で取得したaccessToken を置き換える必要があります。置き換えた後、応答データにtaskIdが取得されます。

import java.io.*;
import okhttp3.*;
public class main {
  public static void main(String []args) throws IOException{
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = RequestBody.create(mediaType, "");
    Request request = new Request.Builder()
      .url("https://api-server.compdf.com/server/v1/task/img/xlsx?language={{language}}")
      .method("GET", body)
      .addHeader("Authorization", "Bearer {{accessToken}}")
      .build();
    Response response = client.newCall(request).execute();
  }
}

ステップ3: ファイルをアップロードする

変換するファイルをアップロードします。画像変換では、JPG、JPEG、PNG、BMP 形式がサポートされています。必要に応じて、 taskId、accessToken、およびtask パラメータを更新してください。

import java.io.*;
import okhttp3.*;
public class main {
  public static void main(String []args) throws IOException{
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
      .addFormDataPart("file","{{file}}",
                       RequestBody.create(MediaType.parse("application/octet-stream"),
                                          new File("<file>")))
      .addFormDataPart("taskId","{{taskId}}")
      .addFormDataPart("language","{{language}}")
      .addFormDataPart("password","")
      .addFormDataPart("parameter","{  \"contentOptions\": \"2\",  \"worksheetOptions\": \"1\"}")
      .build();
    Request request = new Request.Builder()
      .url("https://api-server.compdf.com/server/v1/file/upload")
      .method("POST", body)
      .addHeader("Authorization", "Bearer {{accessToken}}")
      .build();
    Response response = client.newCall(request).execute();
  }
}

ステップ4:ファイルを処理する

必要に応じてtaskId、accessToken、およびtask パラメータを更新してください。

import java.io.*;
import okhttp3.*;
public class main {
 public static void main(String []args) throws IOException{
   OkHttpClient client = new OkHttpClient().newBuilder()
     .build();
   MediaType mediaType = MediaType.parse("text/plain");
   RequestBody body = RequestBody.create(mediaType, "");
   Request request = new Request.Builder()
     .url("https://api-server.compdf.com/server/v1/execute/start?taskId={{taskId}}&language={{language}}")
     .method("GET", body)
     .addHeader("Authorization", "Bearer {{accessToken}}")
     .build();
   Response response = client.newCall(request).execute();
 }
}

ステップ5: タスク情報を取得する

前の手順で取得したtaskIdとaccess_tokenを使用して、すべてのタスク情報にアクセスします。変換結果である .xlsx ファイルも取得できます。

import java.io.*;
import okhttp3.*;
public class main {
  public static void main(String []args) throws IOException{
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("text/plain");
    RequestBody body = RequestBody.create(mediaType, "");
    Request request = new Request.Builder()
      .url("https://api-server.compdf.com/server/v1/task/taskInfo?taskId={{taskId}}")
      .method("GET", body)
      .addHeader("Authorization", "Bearer {{accessToken}}")
      .build();
    Response response = client.newCall(request).execute();
  }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?