본문 바로가기
IT

[UiPath]PDF 내의 Text Read

by AppleLover 2023. 7. 29.
반응형

★PDF 내의 Text Read 방법

  - 처음에는 OCR 기능을 이용해서 text를 가져오는 방법을 사용하려고 하였다. 

 

 But!!!

 - 대부분의 모델이 전부 유료였으며, 무료 모델을 사용해보았더니 매우 인식율이 낮았다. (ex:Tesseract 한글 버전)

 

그리하여

  - 고민을 하다가 단순하게 Read PDF Text를 생각해 내서, 여기 저기 찾아보며 만들었다.

 

결론적으로 아래의 방법은 쉽게 갈수 있는 따라서 쓸수 있는 방법이니, Best Case는 아님을 알려드립니다.

 

 -  만드는 법 -

 

1. Build Data Table

 - 일단 만들려고 보았더니 데이터를 넣을 Data Table이 필요했다.

   요구사항에 맞게 테이블의 컬럼을 만들어서 초기화 하였다.

  - 나의 경우에는 편의성을 위하여 다 String 으로 만들었다. 특히 전부 100으로 만들었다.

 

2. 폴더 내의 pdf 파일 읽기.

 - 이메일로 전송 받은 파일들을 어딘가에 넣어서 활용하고 싶었다.

 - 내가 원하는 폴더에 *.pdf 파일로 전부 압축을 풀어서 for Each file in Folder 기능을 사용했다. 

 - 자동으로 돌면서 폴더를 털어주는 기술이 매우 매력이 있다.

 

3. 해당 부분 Substring으로 끌어오기

  - PDF 파일 형식을 같은데 가져올 데이터양이 많았다.

  - 듀얼모니터로 하나씩 중복이 없는지 확인하면 일일히 손으로 넣었다.

  - 다른 펑션을 쓰면 더 빠를거 같은데 Java하던 사람이라 그런지 편한걸로 그냥 했다. 

  - 앞뒤의 특징적인 Text를 기준으로 가운데만 Substring 한다.

4. Add Data Row

  - 돌고 돌리며 돌때마다 나의 Data Table에 Add를 해주었다.

  - 돌면서 rows(i)를 활용해서 넣으려고 처음에 짰는데, 뭐 어쩌구 저쩌구 에러가 자꾸 발생해서 방법을 바꿨다.

  - 아마 위의 실수는 나의 초기화를 잘못한 탓인데, 초기화를 하는걸 고민하기보다 빠른 방법을 택하느라 Add로 갈아탔다.

  - 결론적으로 each를 돌면서 쭉쭉 데이터가 들어가며, 원하는 형태를 만들어주었다. 

5. 엑셀로 정리 후 파일로 Write 한다.

  - 원래 자주 쓰던  write range를 사용해서 먼저 만들어보았다.

  - 먼가 코드가좀더 직관적이지 않고, 새로운 느낌을 내고 싶었다.(head가 잘 안넘어오기도 했다) 

  - 고민하기보단 easy way를 찾기위해 아래 방법을 사용했고, 너무 편리하게 파일이 생성되는걸 보았다. 

6. 해당 결과를 메일로 보내다.

  - 우선 해당 폴더를 통채로 zip으로 압축을 하였다.  

  - SMTP를 활용해서 수신자에게 대량메일을 송신하였다.

 

 

 - 디버깅 돌리면서 개발하는 후진 방법도 중간에 자주 사용하였다.