Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

요즘 정말 멋지고 독특한 새로운 리눅스 소프트웨어를 찾는 일은 점점 어려워졌습니다. 일종의 숙제처럼 느껴질 정도인데요. 지난 4~5년간 데스크톱 환경에서 열정과 혁신이 서서히 사그라들기 시작했기 때문입니다. 유한한 지적 자원 안에서 만들어낼 수 있는 좋은 것에는 한계가 있지만, 모바일로 초점이 잘못 이동한 것과 '리눅스의 해'라는 꿈이 산산조각 난 사실도 잊어서는 안 됩니다.

이런 배경에서 저는 4년 전에 만들어진 소프트웨어인 OCRFeeder를 테스트해 보았습니다. 두 가지 이유 때문입니다. 첫째, 좋은 소프트웨어는 오래되어도 여전히 좋습니다. 둘째, 저는 광학 문자 인식(OCR) 기술의 발전에 늘 관심이 많았고, 우리 도구(AI)가 이 분야에서 얼마나 쓸만한 성능을 내는지 궁금했습니다. 예전에 이 주제로 상세히 글을 쓴 적도 있었고, 2015년에는 YAGF를 리뷰하기도 했습니다. 이제 OCRFeeder가 무엇을 할 수 있는지 함께 살펴보겠습니다. 용감한 리눅스 전사 여러분, 따라오세요!

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

JPG 파일에서 글자를 꺼내다

프로그램 설치는 결코 가볍지 않습니다. 필요한 라이브러리가 상당히 많아서 Ubuntu 18.04에서는 설치 목록이 몇 줄에 걸쳐 표시될 정도였습니다. 이 프로그램은 Tesseract OCR 엔진을 기본 패키지로 사용합니다.

The following additional packages will be installed:
blt gir1.2-goocanvas-2.0 gir1.2-gtkspell3-3.0 libgoocanvas-2.0-9 libgoocanvas-2.0-common libgtkspell3-3-0 liblept5 libtesseract4 libyelp0 python-bs4 python-chardet python-enchant python-html5lib python-lxml python-numpy python-olefile python-pil python-renderpm python-reportlab python-reportlab-accel python-sane python-tk python-webencodings tesseract-ocr tesseract-ocr-eng tesseract-ocr-osd tk8.6-blt2.5 unpaper yelp yelp-xsl

Suggested packages:
blt-demo python-gobject python-wxgtk3.0 python-genshi python-lxml-dbg python-lxml-doc gfortran python-dev python-nose python-numpy-dbg python-numpy-doc python-pil-doc python-pil-dbg python-renderpm-dbg python-egenix-mxtexttools python-reportlab-doc python-sane-dbg tix python-tk-dbg

실행해 보면 인터페이스가 다소 실용적이라는 느낌을 받습니다. 먼저 하나 이상의 이미지를 불러온 뒤, 그 이미지들을 OCR 엔진에 입력하고, 결과물로 어느 정도 정확도 있는 텍스트가 나오기를 기대하게 됩니다. 변환이 끝나면 결과 텍스트를 LibreOffice로 내보낼 수 있습니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCR 엔진

앞서 말했듯이 OCRFeeder는 기본적으로 Tesseract를 사용하지만, 원하는 다른 엔진을 추가할 수도 있습니다. 실제로 CuneiForm, GOCR, Ocrad를 시험해 보았는데, 프로그램이 세 가지 엔진 모두를 정상적으로 감지하고 불러왔습니다. 아주 깔끔하네요. 덕분에 같은 문서를 여러 방식으로 처리해 볼 수 있고, 어떤 엔진이 더 나은 결과를 내는지 비교할 수 있습니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

sudo apt-get install cuneiform gocr ocrad

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

이미지-텍스트 변환

이제 핵심 부분입니다. 여기서 저는 약간 헤매었습니다. 프로그램에게 모든 이미지에서 텍스트를 자동으로 감지하도록(모든 페이지 인식) 명령했더니, 색상으로 표시된 다소 이상한 출력물이 나왔습니다. 불러온 PNG 파일 세 개를 처리하는 데 약 3분이 걸렸고, 그 동안 OCRFeeder의 CPU 사용률은 약 17%, Tesseract는 약 4~5% 수준이었습니다. 애플리케이션이 프로세서 코어를 더 효율적으로 활용한다면 처리 시간은 충분히 단축될 수 있을 것입니다. 게다가 그 이상한 출력 결과 때문에 무엇을 해야 할지 알 수 없었고, 진전이 전혀 없는 듯한 느낌이 들었습니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

곧 방법을 깨달았습니다. 마우스로 화면에 표시된 이미지의 일부를 드래그해 선택하면 별도의 창이 열리고, 거기서 원하는 OCR 엔진을 골라 실제 변환을 실행할 수 있었습니다. 시각적인 버그는 있었지만 전반적으로 꽤 잘 작동했고, 이미지 하나당 처리 시간은 몇 초밖에 걸리지 않았습니다.

별도의 학습이나 기본 설정 변경 없이 네 가지 엔진의 결과 차이는 매우 컸습니다. Tesseract가 가장 좋았고, 사실상 유일하게 쓸 만한 변환 품질을 보여주었습니다. 나머지 엔진들은 사용을 고려할 수 없을 정도였습니다. 이유는 잘 모르겠지만 어쨌든 그런 결과였습니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

또한 회색 배경 이미지에서 더 나은 결과를 얻었습니다. 과거 Tesseract는 이런 경우에 고전했는데, 그동안 엔진에 들어간 개선이 실감되네요. 물론 이것은 엄밀히 말해 OCRFeeder 자체의 특징이 아니며, 원한다면 명령줄에서 직접 Tesseract를 실행할 수도 있습니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

기울기 보정(deskew)과 언페이퍼(unpaper)

OCRFeeder에는 유용한 기능 두 가지가 포함되어 있습니다. 하나는 기울어진 스캔 이미지에서 텍스트를 자동으로 회전시켜 주는 기능(deskew)이고, 다른 하나는 종이 배경 노이즈를 제거해 더 정확한 변환을 돕는 기능(unpaper)입니다. 두 가지 모두 시험해 보았는데, deskew는 잘 작동했고 unpaper는 그럭저럭이었습니다. 하지만 텍스트를 올바르게 회전한 후(예전에 GIMP로 대조 이미지를 처리했던 것처럼) 변환 결과는 한층 더 좋아졌습니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

ODT로 내보내기

이 부분은 다소 까다로웠습니다. 몇 번 시도하는 동안 여러 오류를 만났지만, 결국에는 성공했습니다. 출력 결과가 미려하지는 않지만, 좋은 점은 여러 변환 결과를 동시에 내보낼 수 있고, 이미지마다 서로 다른 엔진을 사용한 결과까지 한꺼번에 저장할 수 있다는 것입니다. 꽤 유용한 기능입니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

환경설정

마지막으로 프로그램의 동작 방식을 조정할 수 있습니다. 대단한 설정은 아니지만 텍스트 감지율과 인식 정확도 개선에 도움이 됩니다. 대체로 텍스트 열 폭, 여백, 언어 선택 등을 조정하는 수준입니다. 대부분의 사용자에게는 기본값이 충분히 합리적인 출발점입니다.

OCRFeeder 리뷰 – 이미지 속 텍스트를 추출하는 리눅스 오픈소스 OCR 도구

결론

OCRFeeder는 합리적이고 유연한 소프트웨어입니다. 여러 OCR 엔진을 지원하고 이미지 보정 알고리즘도 훌륭한 보너스입니다. 이러한 장점 덕분에 자유 소프트웨어 시장에서 이런 종류의 프로그램 중 가장 가능성 있는 후보라고 할 수 있지만, 안타깝게도 누군가 프로젝트를 이어받지 않는 한 당분간 업데이트를 기대하기는 어려워 보입니다. 이 분야에는 충분한 시장성이 있음에도 리눅스 세계는 피로와 무관심 사이 어딘가에 갇혀 있는 셈입니다.

그런 아쉬움을 제외하면, 나이와 업데이트 문제를 제외하면, OCRFeeder는 대체로 제 역할을 해냈습니다. 변환 품질도 나쁘지 않았고, UI를 통해 작업한다고 손해 볼 일도 없으며, 내보내기 기능으로 편집 가능한 깔끔한 문서를 만들 수 있습니다. Tesseract의 발전 또한 반갑습니다. 텍스트가 가득한 이미지가 쌓여 있다면, 혹은 오래된 서식 위의 필기 텍스트를 현대적이고 쓸모 있는 데이터로 바꾸고 싶다면 OCRFeeder를 시험해 볼 만합니다. PDF 지원은 물론 스캐너에서 직접 읽어오는 기능도 갖추고 있습니다. 실험해 볼 가치가 충분한 프로그램입니다. 이제 슬슬 가보겠습니다. 안녕!

Cheers.