본문 바로가기
개발 일지/PDF 파일 번역 프로그램

PDF 파일 번역 프로그램 - 자료 조사 및 API 테스트

by tls1107 2024. 4. 1.
728x90
반응형

자료 조사

직접 만들기로 결정했으니 어떻게 만들지를 조사했다.

예전에 GCP 를 한참 많이 사용할 때 회사의 요청으로 번역 api 도 조사했었다.

그 때 봐두었던 문서 번역 API 가 생각이 났다. 그래서 문서 번역 API를 우선으로 조사했다.

 

조사 결과 PDF나 DOC 파일을 번역해주는 API를 GCP가 이미 제공하고 있었다.

https://cloud.google.com/translate/docs/advanced/translate-documents?hl=ko

 

문서 번역  |  Cloud Translation  |  Google Cloud

의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 문서 번역 Cloud Translation - Advanced는 PDF 및 DOCX와 같은 형식이 지정된 문서를 직접 번역할 수 있는

cloud.google.com

 

또한 아랍어 또한 지원한다는 것을 확인했다. 

https://cloud.google.com/translate/docs/languages?hl=ko

 

언어 지원  |  Cloud Translation  |  Google Cloud

의견 보내기 언어 지원 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 인공신경망 기계 번역 모델 Translation API의 인식 엔진은 인공신경망 기계 번역(NMT) 모

cloud.google.com

 

해당 API는 글자까지 모두 스캔이 된 기본 PDF 파일의 경우엔 20MB에 300페이지까지 한번에 번역이 가능하지만

스캔된 PDF 파일의 경우 20페이지까지만 한번에 번역이 가능하다. 

 

내가 해결하고자 하는 문제는 그냥 아랍어로 된 책을 스캔한 것이기 때문에 후자에 해당한다.

그렇다면 3~400MB는 기본으로 넘기는 책을 번역하기 위해선 파일을 20페이지 단위로 분할해야 한다.

 

PDF 파일 분할은 그리 어려운 작업은 아니라고 판단했고 먼저 API 테스트를 진행하기로 했다.

아랍어 번역이 워낙에 수요도 많지 않고 알려지지 않았기에

번역 성능이 어느정도 되는지, 글자 인식은 잘 되는지 판단할 필요가 있었다.

문서 번역 API 사용

0. API 테스트를 위해 구글 계정을 새로 만들고 GCP에 가입한다 (계정 보유 시 넘겨도 무방) 

1. Cloud Translation API 사용을 활성화한다

2. 번역하려는 파일을 Cloud Storage에 업로드 한다

3. API 에 필요한 정보들을 저장해두는 request.json 파일을 생성 후 필요한 정보들을 넣는다.

{
	# 번역 전 파일의 언어 (ar == 아랍어)
    "source_language_code": "ar",
    
    # 번역 후 파일의 언어 (ko == 한국어)
    "target_language_code": "ko",
    
    # Cloud Storage에 저장해둔 파일의 경로
    "document_input_config": {
        "gcsSource": {
            "inputUri": "gs://scaned_pdf/000.pdf"
        }
    },
    
    # 번역 후 파일을 Cloud Storage에 저장할 경로 
    "document_output_config": {
        "gcsDestination": {
            "outputUriPrefix": "gs://scaned_pdf/"
        }
    },
    
    # 글자 인식이 된 파일의 경우 True, 스캔된 파일의 경우엔 false
    "isTranslateNativePdfOnly": false
}

운영체제에 따라 API 실행 명령어가 다르다

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: arabictokorean" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://translation.googleapis.com/v3/projects/arabictokorean/locations/us-central1:translateDocument"

4.1. cURL : Linux, Mac, Cloud Shell 의 경우 실행 명령어

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "프로젝트명" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://translation.googleapis.com/v3/projects/프로젝트명/locations/us-central1:translateDocument" | Select-Object -Expand Content

4.2. PowerShell : Window 


5. 다음과 비슷한 JSON 응답이 돌아온다

{
  "documentTranslation": {
    "byteStreamOutputs": ["BYTE_STREAM"],
    "mimeType": "MIME_TYPE"
  },
  "model": "projects/PROJECT_NUMBER/locations/us-central1/models/general/nmt"
}

 

6. 번역이 완료된 파일은 Cloud Storage에 저장된다.

 

번역 전 -> 번역 후

 

아랍권에서 17년 정도 살았던 필자가 읽어보니 아직 어색한 부분도 있지만

내용을 이해하기엔 충분한 수준의 번역이 가능했다.

 

이로써 테스트를 마쳤고 테스트 과정을 자동화하고

웹사이트를 만들어 호스팅을 하는 것을 목표로 잡고 개발을 시작한다.

728x90
반응형

댓글