안녕하세요 신묘한힘입니다. GPT에 입문한지 얼마 안됐을 때, pdf를 올리면 분석해준다고 그래서 제가 가지고 있던 대학 교재 pdf를 올렸는데 분석이 안되는 것을 알았습니다.. 알고보니 스캔된 교재는 텍스트 인식을 할 때, OCR을 써야 한다고 하는군요.. 또 알아보니 OCR은 유료 서비스가 대다수였고, 무료툴도 있긴 하지만 이왕 하는 거 한번 만들어볼까 해서 시작하게 되었습니다…
조약한 코드들이지만 양해부탁드리며 여러 개선할 부분이라던지, 아이디어라던지 주시면 너무 감사드리겠습니다. 짧은 부트캠프 기간 동안 그래도 하나의 툴을 익힌 것 같아 기분이 좋습니다 ㅎㅎ. 그럼 👀 시작해보겠습니다
OCR의 개념
스캔된 이미지로부터 텍스트를 추출하는 방법이 OCR입니다.
과정을 물어보니, PIL 라이브러리와 Pytesseract를 추천하길래 그것을 사용해보려고 합니다.
OCR을 어떻게 적용하면 좋을지, 처리 과정을 물어보게 되었습니다.
😶🌫️ 아직은 뭐가 뭔지 잘 모르기에 일단 youtube 이런 곳을 뒤져서 pytesseract를 어떻게 사용하는지를 검색해보았습니다.
tesseract의 다운로드와 예제를 보시고 싶으시면 이 영상을 참고하시면 될 것 같습니다!
원래 아이디어는 PyPDF 라이브러리로 각각 페이지를 받아와서 OCR을 하는 것이었는데 이게 왜 안되는지 모르겠는데 .pages 데이터에서 이미지를 따로 추출해서 저장하는 과정에서 자꾸 에러가 나서 며칠 고민하다가 사뿐히 내려놓고 다른 방법을 마련했습니다!
그 방법은 그냥 각각의 페이지를 이미지 파일로 만들어버려서 저장하자..
완전 무식한 방법이지만, 가장 직관적인 방법이라 생각했기에, PDF 파일을 읽어서 각각의 페이지를 이미지로 만들어버리는 모듈을 불러왔습니다
pdf2image를 쓰려고 하면 poppler 이라는 것도 따로 다운로드를 받아서 poppler path에 경로를 넣어주셔야 합니다!
그러고 나서는 같은 workspace내에 save_folder라는 것을 새로 만들어서 거기 안에 .png파일들을 저장하려고 했습니다!
쓰인 pdf는 제 전공책인 전력전자.. 무려 500page의 텍스트북입니다
대충 요런 식으로 save_folder 밑에 저장이 되게 됩니다.
Image 준비는 끝났고, 이제 OCR을 하는 부분이 남았습니다. 의외로 되게 간단하게 뽑을 수 있었습니다. 지금은 Text만 뽑고 나중에는 그림까지 해보고 싶습니다 ㅠ……ㅠ
save_folder을 돌면서 모든 이미지 파일들을 돌면서 OCR을 돌리고, text에다가 그냥 다 우겨넣었습니다. 이것 땜에 좀 오래걸리나..(?) 시간을 줄일 수 있는 방법이 있을지 궁금합니다..
어찌 됐든 순수한 텍스트북으로 500 페이지 되는 전공책 글자를 다 불러오려니 시간이 엄청 걸리더군요.. (약 6시간..?) 시간 을 줄일 수 있는 로직을 생각해봐야겠습니다.
lang = ‘eng’으로 설정했는데 한국어도 같이 인식하고 싶으시면 lang=’kor+eng’ 하시면 됩니다만 한국어는 삑사리가 좀 많이 납니다. 데이터도 추가로 다운로드 받아야 하구요.
귀찮기도 하지만, 전공책은 영어니까 아무래도. ㅎㅎㅎ
하다보니 문제가 있었던게 일단 OCR을 돌리고 나서 text를 보게 되면 사실 되게 엉망입니다. 어떤건 띄어쓰기가 되어있고, 어떤건 아니고, 괜찮긴 한데 뭔가 이상합니다.. 그래서 GPT에게 도움을 쳤습니다.
1. tesseract 조정 , 2. 공백 조절 , 3. 자연어 처리 도구 사용, 4. 정규식 사용
제가 가장 끌렸던 것은 자연어 처리 도구를 사용하는 것 이었습니다..
편하게 살고 싶었습니다