본문 바로가기
업무자동화/파이썬-아래아한글 자동화 응용

[2/5, HwpEqn] HWP문서 수식을 텍스트로 추출하는 방법(feat. 파이썬)

by 회사원코딩 2020. 12. 18.
(1)
안녕하세요 ~ 저는 유튜브 회사원코딩 구독자입니다.
올려주신 영상들 잘 시청하고 있습니다. 
문의드릴 사항으로는 한글 파일을 이미지로 변환하여 저장하고, 한글파일내의 텍스트의 위치 정보와 텍스트값(수식 포함, latex)을 추출하고 싶은데, 이것이 win32com 파이썬 모듈로 개발 가능한것인지 궁금합니다.
만약 가능하다면 대략 어떠한 flow로 처리해야할지 궁금합니다.
항상 건승하시길 바랍니다.
감사합니다.

(2)
마티니님,
알려주신 내용을 기반으로 텍스트 값 및 위치를 먼저 추출해보려고 하였으나,  
수식이 포함된 텍스트를  text = hwp.GetText() 로는 추출이 안되어 진행 방향을 못잡고 있습니다 ;;  (테스트해본 한글파일은 첨부파일과 같습니다.)
혹시, 어떤 API들을 써야하는지 알수 있을까요?
감사합니다.

 


지난 포스팅은...

 

[1/5, HwpEqn 서론] LaTeX 수식을 한/글 수식편집기에 넣을 수 있다?

아래아한글의 장점 중 하나는 깔끔한 수식. Visual String 을 이용한 간편한 수식삽입도 가능하며, LaTeX나 MathML과는 다소 상이한, 이를테면 이런 식이다. 위 식의 한컴수식 문자열은 아래와 같다. a ^{

www.martinii.fun


 

지난 포스팅에서는 한/글 수식에서 자체 제공하는 "MathML로 저장" 기능 덕분에 LaTeX와의 상호호환이 가능하다는 이야기를 한 바 있다. 그 부분을 설명해드리기 앞서, 위 구독자 분께서 문의 주신 내용을 먼저 설명해드리려 한다.

단, 구독자 분의 정보가 노출될 수 있어, 보내주신 파일 대신 한/글에서 기본제공하는 템플릿(?) 수식을 사용하겠다. 예제파일은 아래. 튜토리얼 느낌으로 따라해보시려면 아래 파일을 다운받고 나서 파이썬 코드를 따라해보자.

 

수식예제.hwp
0.03MB
이와 같은 수식이 들어있다.

 


수식을 추출하는 파이썬 코드만 보여드리면 아래와 같다. (추출시점에 수식이 선택된 상태여야 한다.)

액션 = hwp.CreateAction("EquationModify")
세트 = 액션.CreateSet()
아이템셋 = 세트.CreateItemSet("EqEdit", "EqEdit")
액션.GetDefault(아이템셋)
추출수식 = 아이템셋.Item("String")
print(추출수식)

 

왼쪽의 수식을 선택한 상태에서 위 코드를 실행한 모습(결과는 우측아래)

 

글이 너무 길어지면 읽기도 불편할 뿐더러 내용이 잘 들어오지도 않더라. (그래서 이번 포스팅은 여기서 마치려고....)


다음 포스팅에서는, 추출 전에 수식을 선택하기 위한 컨트롤 탐색방법을 알아보자.
미리 말씀드리면, "수식"을 포함해 "표"나 "이미지"도 모두 한/글 문서 내에서는 "컨트롤"이라는 객체이다. 컨트롤을 탐색하는 방법은 일반적으로 hwp.HeadCtrl이라는 객체를 먼저 찾고(마지막 원소부터 역순으로 찾으려면 LastCtrl 사용), Prev/Next 키워드로 각각 이전/다음 원소를 탐색한다. (Linked List라는 자료구조와 동일)
이 때 부가적으로 필요한 세 가지 메서드가 있는데,

1. hwp.GetAnchorPos(0) 메서드  # 객체 좌표 리턴(x,y,z 대신 List,Para,Pos를 사용함)
2. hwp.SetPos(List, Para, Pos)  # 파라미터로 입력한 좌표로 캐럿 이동
3. hwp.FindCtrl()  # 캐럿에 인접한 컨트롤 선택(앞뒤로 두 개가 붙어있는 경우 뒤의 객체 우선선택)

위 세 개의 메서드를 통해, 문서를 순회하면서 모든 수식의 좌표와 텍스트를 파이썬으로 추출해보기로 하자.


다음 포스팅은...

 

[3/5, HwpEqn] 컨트롤 탐색방법(feat. 파이썬)

지난 포스팅은... [2/5, HwpEqn] HWP문서 수식을 텍스트로 추출하는 방법 (1) 안녕하세요 ~ 저는 유튜브 회사원코딩 구독자입니다. 올려주신 영상들 잘 시청하고 있습니다. 문의드릴 사항으로는 한글

www.martinii.fun

728x90
반응형

댓글0