728x90
반응형

json, 별도 포멧의 파일에 데이터를 입력하고 사용하려면 데이터 가공 및 배포에 대한 허들이 발생합니다. 

 

트래픽이 많이 발생하지 않는다면 spreadsheet에서 데이터를 일괄 관리하고, 필요한 곳에서 spreadsheet 접속하여 갱신된 최신 데이터를 가져와 사용한다면 데이터 가공/배포에 대한 비용을 극적으로 줄일 수 있습니다. 

 

모듈은 google-spreadsheet를 사용하여 Google Spread Sheet API를 사용하며, document는 theoephraim.github.io/node-google-spreadsheet/#/ 를 참고하시면 됩니다.

 

API 사용을 위해서는 console.developers.google.com/에서 API 사용 허가를 설정해야 합니다. 

 

sheet 사용을 위한 프로젝트를 새로 만들어 보겠습니다. 

상단 프로젝트를 선택하고 "새 프로젝트"를 생성합니다. 

 

 프로젝트를 생성했다면 좌측 메뉴에서 라이브러리를 선택합니다. 

 

API 라이브러리 검색 란에 'sheet'를 입력한 후 "Google Sheets API" 를 선택, 그리고 "사용"버튼을 눌러주시기 바랍니다. 

 

이제 문서 사용을 위한 "사용자 인증 정보"를 세팅해야 합니다. 화면 좌측에서 "사용자 인증 정보"를 클릭한 후 "사용자 인증 정보 만들기"를 선택합니다.

 

 

 

 

 

'sheet-user'라는 이름을 입력 한 후 "완료" 버튼을 선택하여 계정 생성을 마무리 합니다.

 

다음으로 인증에 사용할 키를 생성하겠습니다.

 

서비스 계정 정보 중 우측의 작업 버튼을 누르면 "키 만들기" 메뉴가 있습니다. 이 메뉴를 선택하면 키 유형을 선택하는 다이얼로그가 뜹니다. 

JSON 을 선택 후 "만들기" 버튼을 누르면 키가 생성됩니다. 생성된 json 파일은 코드에서 인증을 위해 사용하게 됩니다.

 

이제 접근하고자 하는 spreadsheet 문서로 가서 "공유"버튼을 눌러 생성된 계정 ( 이 예제에서는 sheet-user@... 로 생성했던 계정을 말합니다.) 사용자 그룹에 편집자로 추가합니다. 읽기만 할 경우 뷰어로 추가하셔도 무방합니다.

 

계정을 추가한 후 문서ID를 복사해 둬야 합니다. 해당 문서가 열린 화면의 주소창에 아래 이미지 중 파락색으로 칠해진 부분이 해당 문서의 ID입니다. 이 값만 별로도 복사해 두시기 바랍니다. 

모든 준비가 마무리 되었습니다. 이제 코드로 해당 문서를 접근해 보겠습니다.

 

const {GoogleSpreadsheet} = require("google-spreadsheet");
const gs_creds = require("./eco-test-d2asdf22849b5bb4.json"); // 키 생성 후 다운된 json파일을 지정합니다.
const doc = new GoogleSpreadsheet("문서ID를 입력하세요.");

async function authGoogleSheet(){
	try{
		await doc.useServiceAccountAuth(gs_creds);
		await doc.loadInfo()
	}catch(err){
		console.log( "AUTH ERROR ", err)
	}
}
authGoogleSheet(); // 처음 시작할 때 문서 접속에 대한 인증을 처리하고 해당 문서를 로드합니다.

.
.
.

async function readFirstSheetRow(){ 
	var sheet = doc.sheetsByIndex[0]; // 첫번째 시티를 가져옵니다.
    var rows = await sheet.getRows({offset:3, limit:100}); // 세 번째 row 부터 100개 row를 가져옵니다.
    rows.forEach((ele)=>{
    	console.log( ele._rawData[0] , ele._rawData[1] ) // 읽어온 rows 중 현재row에서 첫 번째 컬럼과 두 번째 컬럼을 출력합니다.
    });
}
readFirstSheetRow();

 

위 코드를 실행해 보시면 해당 문서의 첫번째 sheet의 세번째 row 부터 100개를 읽어와 각 row의 첫 번째, 두 번째 컬럼의 정보를 화면에 출력합니다. 

 

더 많은 API는 이 문서를 참고하시기 바랍니다.

 

도움이 되셨길 바라며 이상 마치겠습니다.

반응형
728x90
반응형

pytesseractGoogle’s Tesseract-OCR Engine 용 래퍼입니다. (OCR : Optical Character Recognition, 광학 문자 인식)

 

이를 사용하여 이미지에서 숫자를 추출하는 과정을 정리해 보았습니다. 

 

pytesseract는 pip로 설치만 하고 끝나는 것이 아닌, 환경변수와 Tesseract-OCR의 별도 빌드 과정이 필요합니다. 

 

tesseract-ocr.github.io/tessdoc/Home.html 문서를 참고하여 빌드 후 설치합니다.

 

그리고 "고급 시스템 설정" -> "환경 변수" 에서 시스템 변수 혹은 사용자 변수에 "TESSDATA_PREFIX"라는 변수 이름으로 tesseract가 설치된 위치에 포함된 tessdata 의 전체 경로를 넣어준 후 시스템을 재시작합니다. 이는 윈도우에서는 pytesseract가 해당 시스템에 설치된 tesseract.exe를 실행하는 이때 언어 데이터를 TESSDATA_PREFIX에 설정된 경로에서 읽어오는데, 이를 위해 필요한 설정입니다.

 

추후 tessdata에는 github.com/tesseract-ocr/tessdata 에서 인식을 원하는 언어 데이터를 다운받아 삽입 후 사용할 수 있습니다. 

 

설치 과정이 끝났다는 가정하에 관련 샘플 코드를 작성해 보겠습니다. 

 

아래 샘플 코드는 화면의 특정 영역을 캡쳐하여 해당 영역에 포함된 텍스트 중 숫자만 추출하는 작업을 하는 코드입니다.

from PIL import ImageGrab # 화면의 특정 영역을 이미지로 캡쳐할 때 사용합니다.
from pytesseract import *
pytesseract.tesseract_cmd = "C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe" # 설치한 경로를 설정하세요.


def readDigitFromScreen(_rect):
    img = ImageGrab.grab(_rect) # 화면 중 _rect 영역을 이미지로 캡쳐합니다.
    
    digit=''
    try:
        text = image_to_string(img, lang='eng')
        numlist = re.findall("\d", text) # 문자를 한 자씩 확인하며 숫자만을 뽑아옵니다. 한번에 뽑고 싶다면 "\d+" 옵션을 사용하세요.
        for num in numlist:
            digit += num # 숫자는 문자열 형태로 numlist에 저장되니 이를 digit에 묶어줍니다.
    except TesseractNotFoundError: # Tesseract-OCR를 설치하지 않았다면 에러를 발생하고 종료합니다.
        print("you need to install Tesseract-OCR on your system")
        
    return int(digit) # digit에 string 형태로 정리된 문자를 integer로 변환하여 돌려줍니다.

 

최근 툴 제작에는 Python을 공부하면서 사용하고 있는데 C++로 제작할 때 생각하면 ... -0-;;; 편하긴 하네요. 편한만큼 조심해야 할 것들이 많긴 하지만요. :)

 

 

반응형
728x90
반응형

테스트 용 툴 제작하다 재밌어 보여서 동영상만 공개해 봅니다. 

 

Amazon Polly : aws.amazon.com/ko/polly/ , docs.aws.amazon.com/ko_kr/polly/latest/dg/API_Reference.html , pypi.org/project/boto3/

Google Translate API : pypi.org/project/googletrans/

 

엑셀 문서에 한글을 등록한 후 툴에서 오픈해 번역하고 싶은 언어를 추가 후 번역을 시도하면,

Google Translate API로 텍스트로 번역을 하고, Amazon Polly로 음성 파일을 만들어 저장합니다. 

해당 셀을 선택하면 음성 파일을 들을 수 있습니다.

 

 

 

반응형

+ Recent posts