함께 작업하기: DisplayList 및 TextPage¶
이러한 클래스를 함께 사용하는 방법에 대한 지침입니다.
일부 상황에서는 여기서 설명하는 세부 수준으로 돌아가면 성능 개선을 달성할 수 있습니다.
DisplayList 생성¶
DisplayList (디스플레이 리스트) 는 해석된 문서 페이지를 나타냅니다. 픽스맵 생성, 텍스트 추출 및 텍스트 검색 메서드는 모두 – 배후에서 – 페이지의 디스플레이 리스트를 사용하여 작업을 수행합니다. 페이지를 여러 번 렌더링해야 하거나(예: 확대/축소 수준 변경), 텍스트 검색과 텍스트 추출을 모두 수행해야 하는 경우, 디스플레이 리스트를 한 번만 생성한 다음 다른 모든 작업에 사용하면 오버헤드를 절약할 수 있습니다.
>>> dl = page.get_displaylist() # create the display list
여러 페이지에 대한 디스플레이 리스트를 “스택에”(리스트에) 생성할 수도 있습니다. 문서를 열 때, 유휴 시간 동안, 또는 페이지를 처음 방문할 때(예: GUI 스크립트) 저장할 수 있습니다.
다음의 모든 작업에는 디스플레이 리스트만 필요합니다. 해당 Page 객체는 삭제되었을 수 있습니다.
픽스맵 생성¶
다음은 DisplayList (디스플레이 리스트) 에서 픽스맵을 생성합니다. 매개변수는 Page.get_pixmap() 과 동일합니다.
>>> pix = dl.get_pixmap() # create the page's pixmap
이 문의 실행 시간은 Page.get_pixmap() 보다 최대 50% 짧을 수 있습니다.
텍스트 검색 수행¶
위의 디스플레이 리스트를 사용하여 텍스트를 검색할 수도 있습니다.
이를 위해 TextPage 를 생성해야 합니다.
>>> tp = dl.get_textpage() # display list from above
>>> rlist = tp.search("needle") # look up "needle" locations
>>> for r in rlist: # work with the found locations, e.g.
pix.invert_irect(r.irect) # invert colors in the rectangles
텍스트 추출¶
위의 동일한 TextPage 객체를 사용하여 이제 5가지 텍스트 추출 메서드 중 하나 또는 모두를 즉시 사용할 수 있습니다.
참고
위에서 인수 없이 텍스트 페이지를 생성했습니다. 이것은 기본 인수 3(ligatures 및 공백이 보존됨)으로 이어지며, 즉 이미지는 추출되지 않습니다 – 아래를 참조하세요.
>>> txt = tp.extractText() # plain text format
>>> json = tp.extractJSON() # json format
>>> html = tp.extractHTML() # HTML format
>>> xml = tp.extractXML() # XML format
>>> xml = tp.extractXHTML() # XHTML format
추가 성능 개선¶
픽스맵¶
Page 장에서 설명한 대로:
투명도가 필요하지 않으면 픽스맵을 생성할 때 alpha = 0 을 설정하세요. 이것은 25%의 메모리를 절약하고(RGB인 경우, 가장 일반적인 경우) GUI 소프트웨어에 따라 실행 시간을 약 5% 절약할 수 있습니다.
TextPage¶
페이지의 텍스트와 함께 이미지를 추출할 필요가 없으면 다음 옵션을 설정할 수 있습니다:
>>> flags = pymupdf.TEXT_PRESERVE_LIGATURES | pymupdf.TEXT_PRESERVE_WHITESPACE
>>> tp = dl.get_textpage(flags)
이것은 HTML, XHTML 및 JSON 텍스트 추출의 전체 실행 시간을 약 25% 절약하고, 문서가 그래픽 지향적인 경우 스토리지(메모리 및 디스크 공간 모두)의 양을 대폭 줄입니다.
하지만 이미지가 필요한 경우 플래그에 7 값을 사용하세요:
>>> flags = pymupdf.TEXT_PRESERVE_LIGATURES | pymupdf.TEXT_PRESERVE_WHITESPACE | pymupdf.TEXT_PRESERVE_IMAGES
