Twinreader Api를 curl 사용하여 호출하는 방법

작성자 이호영 수정일 2023-01-06 11:28

#curl, #TwinReader, #API호출, #분석

아티클 관련 제품: TwinReader

이 글을 읽으면



주의 사항

  • 이미 분석을 완료하여 최종 결과가 존재하는 요청의 경우 이전 결과에 overwirte 되기 때문에 별도의 경로에 이전 결과를 저장 후 새로운 분석 요청 할 것을 권장합니다.


기본 지식

  • 결과 Directory : Twinreader가 분석을 완료하고 결과 정보를 저장하는 위치입니다.
         ex)  /[Data_home]/Twinreader/output/[이미지 요청 ID]
  • 요청 Prameter
ParameterDescription
requesthttp Method를 'POST" 로 설정
headerhttp Header의 'Content-Type'을 'application/json'으로 설정
datarequestId분석 요청을 구분하기 위한 유일한 값으로 임의로 설정
callbackUrl분석이 완료 되었을 때 호출 될 URL (생략가능)
images분석할 문서 이미지가 위치한 directory 경로



문서 분류 조회 방법

    - 문서 분류를 조회하는 방법으로 'analysis/category'을 사용하여 호출합니다. 


  1.  요청 code
     curl http:/[Twinreader_server_IP]:[port]/twinreader-mgr-service/api/v1/analysis/category \
    --request POST \
    --header "Content-Type: application/json" \
    --data '{"images": ["image_dir"]}'
  2.  요청 Query

    - 문서 이미지가 위치한 directory는 반드시 '/[Data_home]/twinreader/input'의 하위여야 합니다. 
이미지가 여러 장일 때이미지가 한 장일 때
{

    images : [

        "/[Data_home]/twinreader/input/[image_dir]"

    ]

}

{

    images : [   "/[Data_home]/twinreader/input/[image_dir]/[image_name.ext]"

    ]

}

  • 문서 이미지가 여러 장일 경우 이미지들이 위치한 directory의 경로를 작성합니다.
  • 여러 이미지 중 한 장의 문서 이미지를 요청할 경우 해당 문서 이미지가 위치한 경로를 작성합니다. 


    c. 응답 JSON

{
    "images" : [
        {
              "path" : "[image_path/imageName_1.ext]",
              "pageNumber" : "1",
              "category" : "문서 분류 명",
              "success: true,
              "message" : ""
        },
        {
              "path" : "[image_path/imageName_2.ext]",
              "pageNumber" : "1",
              "category" : "문서 분류 명",
              "success: true,
              "message" : ""
        }
    ]
}
  • 여러 장의 이미지 경우 이미지 장마다 상태를 알려줍니다.


분석 상태 조회 

    - Twinreader의 process 진행 상태를 조회할 때 사용하며 'analysis/statusCheck'를 사용하여 호출합니다.

  1. 요청 코드
    curl http:/[Twinreader_IP]:[port]/twinreader-mgr-service/api/v1/analysis/statusCheck \
    --header "Content-Type: application/json" \
    --data '{"images": ["image_dir"]}'
  2. 요청 Query
    - 문서 분류 조회와 같은 방법으로 요청합니다.

  3. 응답 JSON
    {
        "images" : [
            {
                  "path" : "[image_path/Test_image_name_1.png]",
                  "success: true,
                  "message" : ""
            },
            {
                  "path" : "[image_path/Test_image_name_2.png]",
                  "success: false,
                  "message" : "Analyzing"
            }
        ]
    }    

            - 요청한 시점의 요청 건에 모든 이미지의 상태에 대해 응답합니다. 


       d. 응답 Message
                  - 현재 이미지 분석 상태를 확인 할 수 있습니다.

MessageDescription
Analyzing요청한 이미지를 분석 중 입니다.

Analyzing. Waiting for Another page or Templates

분석 중이며 다른 페이지의 분석을 기다리거나 template 수행 중입니다.

Converting File

파일 변환 중입니다.
File Conversion error파일 변환 에러입니다.
Analyzing ErrorModel 분석 에러입니다.
Plugin ErrorPlugin 에러입니다.
Unregistered Template ErrorTemplate에서 알 수 없는 에러가 발생 하였습니다.
Other Document Classification ErrorClassification에 정의 되지 않은 문서 분류입니다.
Classification Json Parse ErrorClassification 파일을 찾을 수 없습니다.
Template Json Parse ErrorTemplate 파일을 찾을 수 없습니다.

Common Error

그 밖에 에러입니다.



Template 결과 추출 요청 

  • 지정한 template로 분석한 결과를 추출하는 API로 'template/extract/path'를 사용합니다.
  • templateName / templateList 구분하여 사용합니다 .

            ① templateName :  분석 데이터에 적용할 template name

            ② templateList : 다중 페이지 처리를 위한 복수 Template name


  1. 요청 코드
    curl http:/[Twinreader_server_ip]:[port]/twinreader-mgr-service/api/v1/template/extract/path \
    --request POST \
    --header 'Content-Type: application/json' \
    --data '{"imagePath": "Test_image_sample.jpg"], "templateName": "통원영수증"}'
  2. 요청 Query
    - 분석하는 문서 이미지에 따라 templateName / templateList로 구분하여 요청할 수 있습니다.

    {
      "imagePath" : "/[Data_home]/twinreader/input/[image_dir]",
      "templateName" : "지정한 template_name" 
    }
    -------------------------------------------------------------------------
    {
      "imagePath" : "/[Data_home]/twinreader/input/[image_dir]",
      "templateList" : "[지정한 template_name]" 
    }
  3. 응답 JSON

    {
        "images" : [
            {
                  "path" : "[/twinreader/output/image_Id/templateJson/Test_image_name_1.json]",
                  "success: true,
                  "message" : ""
            }
        ]
    }    
  4. 응답 Message

    MessageDescription
    Classification JSON Read FailClassification 파일을 읽을 수 없습니다.
    TemplateName is not defined in Classification.jsonClassification 파일에 templateName이 정의되지 않았습니다.
    Template Error - Object Create FailTemplate error - 객체 생성에 실패했습니다.


단일 이미지에 대해 tempate 요청

    - Directory 내 하나의 이미지에 대해 template를 요청할 때 사용하는 Api로 'teamplate/templateResult'를 사용합니다.

  1.  요청 코드
    curl -G http://10.1.1.70:8080/twinreader-mgr-service/api/v1/template/templateResult --data-urlencode "image=진료비_계산서_type1.jpg"

  2. 요청 Query
    /twinreader-mgr-service/api/v1/template/templateResult?dir=/dir/&image=[image_name.png]

        - 다른 요청들과 달리 'Get' 방식으로 전달됩니다.


  3. 응답 JSON
    {
      result : {
        "Page1" : {
          "metaData" :{
            "imageWidth" : "2341",
                                    "imageHeight" : "1661",
            "template" : "분류문서.json"
          }, {...}, {...},
        }
      },
      message : ""
    }
  4. 응답 Message
    MessageDescription
    Allow only one or none parameter "dir"

    요청 Query에 directory 여러 개 전송한 경우로 없거나 하나만 전송합니다.

    Allow only one parameter "image"

    요청 Query에 image 여러 개 전송한 경우로 없거나 하나만 전송합니다.

    Not find directory

    분석을 요청한 image가 경로가 없거나 해당 경로가 잘못 입력되었을 경우
    Not find directory or image file분석 요청한 문서 이미지의 파일 명 / 확장자가 잘못 입력된 경우
    Not find file분석 파일을 찾지 못한 경우입니다.


마치며

  • 전체 Twinreader process가 아닌 일부 process만 사용하는 방법에 대해 알아보았습니다.
  • API를 사용하여 directory 내 단일 이미지를 twinreader로 분석 요청하는 방법에 대해 알아보았습니다.


아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300