KR101376440B1 - 문서 콘텐츠의 순서화 - Google Patents

문서 콘텐츠의 순서화 Download PDF

Info

Publication number
KR101376440B1
KR101376440B1 KR1020120005849A KR20120005849A KR101376440B1 KR 101376440 B1 KR101376440 B1 KR 101376440B1 KR 1020120005849 A KR1020120005849 A KR 1020120005849A KR 20120005849 A KR20120005849 A KR 20120005849A KR 101376440 B1 KR101376440 B1 KR 101376440B1
Authority
KR
South Korea
Prior art keywords
primitive
area
region
regions
point
Prior art date
Application number
KR1020120005849A
Other languages
English (en)
Other versions
KR20120083866A (ko
Inventor
필립 앤드류 맨스필드
마이클 로버트 레비
데렉 비. 클레그
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20120083866A publication Critical patent/KR20120083866A/ko
Application granted granted Critical
Publication of KR101376440B1 publication Critical patent/KR101376440B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/137Hierarchical processing, e.g. outlines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Document Processing Apparatus (AREA)
  • Processing Or Creating Images (AREA)
  • Editing Of Facsimile Originals (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

프리미티브 영역들의 세트로 분할된 페이지에 대해, 프리미티브 영역들의 세트를 순서화된 리스트로 체계화하기 위한 새로운 방법이 개시된다. 순서화된 리스트 내의 프리미티브 영역들은 먼저 페이지의 좌표계에서 프리미티브 영역들의 시작 포인트들을 비교하는 시작 포인트 순서 관계 순서화를 이용하여 분류된다. 이어서, 순서화된 리스트 내의 프리미티브 영역들의 순서는 비교되는 프리미티브 영역들에 국지적인 좌표계들에 따라 프리미티브 영역들을 서로 비교하는 문맥 순서 관계를 이용하여 정밀화된다. 이어서, 문맥 순서 관계 순서화에 따라 부정확하게 순서화된 프리미티브 영역들을 전치함으로써 새로운 순서화된 리스트가 생성된다.

Description

문서 콘텐츠의 순서화{ORDERING DOCUMENT CONTENT}
선행 출원들에 대한 이익의 주장
본원은 2011년 1월 18일자로 출원된 "Reconstruction of Lists, Ordering Page Content, Storing Multiple Representations for a Document, and Adaptive Graphic Objects"라는 제목의 미국 특허 가출원 제61/433,951호의 이익을 주장한다. 본원은 2011년 1월 18일자로 출원된 "Ordering and Selecting Page Content"라는 제목의 미국 특허 가출원 제61/433,952호의 이익도 주장한다. 전술한 가출원들 모두는 본 명세서에 참고로 반영된다.
문서들은 종종 페이지 상에 정해진 위치들에 그려진 프리미티브 요소들(primitive elements)의 집합에 지나지 않는 것으로 정의된다. 예를 들어, PDF(portable document format) 파일은 구조적인 정의를 갖는 것이 아니라, 다양한 위치들에 그림문자들, 형상들 및 비트맵들을 그리기 위한 명령어들을 갖는 것에 지나지 않을 수 있다.
사용자는 그러한 문서를 표준 모니터 상에서 보고, 구조를 추정할 수 있다. 그러나, 그러한 파일은 프리미티브 요소들의 집합에 불과하므로, 문서 보기 애플리케이션은 문서의 의도된 구조에 대한 지식을 갖지 않는다. 문서를 표시하는 애플리케이션은 텍스트 그룹핑들의 행들 및 열들에 기초하여 텍스트 그룹핑들이 서로 관계를 가질 수 있다는 지시를 갖지 못하는데, 그 이유는 문서가 그러한 정보를 포함하지 않기 때문이다. 유사하게, 애플리케이션은 페이지를 통한 텍스트의 흐름(예로서, 하나의 열에서 다음 열로의 흐름, 또는 삽입된 이미지 주위의 흐름), 또는 인간 사용자에 의해 즉시 결정될 수 있는 다양한 다른 중요한 품질들의 지시를 갖지 않는다.
문서 구조에 대한 지식의 결여는 사용자가 단순히 표준 모니터 상에서 문서를 보고 있을 때에는 항상 문제가 되지는 않을 것이다. 그러나, 구조 및 요소들 간의 관계들을 갖는 워드 프로세서, 이미지 편집 애플리케이션 등에 의해 생성된 문서에서와 같이 문서에 액세스하고 문서를 편집할 수 있는 것은 종종 독자에게 유용할 것이다. 사람은 문서의 페이지 내의 콘텐츠를 보고, 대부분은 콘텐츠를 통해 읽을 순서를 결정할 수 있다. 이것은 일반적으로 사람의 눈에 명백한 작업이다. 그러나, 그러한 작업은 컴퓨터 애플리케이션에는 명백하지 않다. 페이지들이 더 복잡(페이지의 단일 수직 배향 열과 달리, 다양한 배향들을 갖는 텍스트의 다수의 열)해짐에 따라, 순서 결정은 훨씬 더 어려워진다. 게다가, 사람이 그러한 페이지의 어느 부분을 선택하려고 시도하고 있는지를 결정하는 것도 어려운 작업이다.
<발명의 개요>
본 발명의 일부 실시예들은 문서의 콘텐츠를 체계화하는 방법을 제공한다. 프리미티브 영역들로 구조화된 콘텐츠를 갖는 문서 페이지에 대해, 이 방법은 프리미티브 영역들을 순서화된 리스트로 분류함으로써 문서 페이지의 콘텐츠를 체계화한다. 일부 실시예들에서, 이 방법은 제1 분류 기준들에 따라 프리미티브 영역들을 프리미티브 영역들의 시퀀스로 분류하고, 제2 분류 기준들에 따라 시퀀스 내의 연속하는 프리미티브 영역들을 전치한다. 이 방법은 전치된 프리미티브 영역들의 시퀀스에 기초하여 순서화된 리스트를 생성한다.
일부 실시예들에서, 이 방법은 처음에 시작 포인트 순서 관계들을 이용하여 문서 내의 프리미티브 영역들을 분류하며, 이는 페이지 내의 프리미티브 영역들의 시작 포인트들의 위치들을 비교한다. 이어서, 이 방법은 시작 포인트 순서 관계에 의해 생성된 최초 분류 결과를 문맥 순서 관계를 이용하여 정밀화하며, 이는 프리미티브 영역들 내의 콘텐츠의 판독 흐름에 따라 프리미티브 영역들을 분류한다. 문맥 순서 관계는 각각의 프리미티브 영역에 대한 선행 영역 및 후속 영역을 정의하며, 이웃 영역의 시작 포인트가 프리미티브 영역의 후속 영역 또는 선행 영역에 있는지를 결정한다. 이 방법은 일부 실시예들에서 처음에 시작 포인트 순서 관계에 따라 프리미티브 영역들을 분류하고, 이어서 문맥 순서 관계에 따라 부정확하게 순서화된 프리미티브 영역들을 전치함으로써 순서화된 리스트를 생성한다.
일부 실시예들은 각각의 프리미티브 영역의 각각의 요소를 순서화된 리스트 내의 순서 인덱스에 의해 표현한다. 순서 인덱스들은 순서화된 리스트 내의 프리미티브 영역들의 순서에 따라 그리고 각각의 프리미티브 영역 내의 요소들의 순서에 따라 할당된다. 페이지 내에 가시적인 분할기들이 존재하는 예들에서, 일부 실시예들은 페이지 내의 가시적 분할기들에 의해 부과된 섹션들에 따라 순서화된 리스트 내의 프리미티브 영역들을 그룹핑한다. 이어서, 이 방법은 프리미티브 영역들의 그룹핑에 따라 순서 인덱스들을 할당한다.
순서화된 리스트에 기초하여, 본 발명의 일부 실시예들은 문서 내의 상이한 프리미티브 영역들에 걸쳐 문서 콘텐츠의 연속 선택을 수행하는 방법을 제공한다. 일부 실시예들은 연속 선택의 최초 및 최종 프리미티브 요소들을 식별함으로써 순서화된 리스트 내의 연속 섹션을 정의한다. 최초 프리미티브 요소는 판독 흐름에서 페이지 상의 시작 선택 포인트에 가장 가까운 프리미티브 요소로서 식별되며, 최종 프리미티브 요소는 판독 흐름에서 페이지 상의 종료 선택 포인트에 가장 가까운 프리미티브 요소로서 식별된다.
위의 요약은 본 발명의 일부 실시예들의 간단한 소개로서 역할하는 것을 의도한다. 이것은 본 명세서에 개시되는 모든 발명 내용의 소개 또는 개요인 것으로 의도하지 않는다. 이어지는 상세한 설명 및 상세한 설명에서 참조되는 도면들은 요약에서 설명된 실시예들은 물론, 다른 실시예들도 더 설명할 것이다. 따라서, 본 명세서에서 설명되는 모든 실시예들을 이해하기 위해서는, 요약, 상세한 설명 및 도면들의 충분한 검토가 필요하다. 더욱이, 청구 내용들은 그 내용들의 사상으로부터 벗어나지 않고 다른 특정 형태들로 구현될 수 있으므로, 요약, 상세한 설명 및 도면 내의 예시적인 상세들로 한정되는 것이 아니라, 첨부된 청구항들에 의해 정해져야 한다.
본 발명의 새로운 특징들은 첨부된 청구항들에서 설명된다. 그러나, 설명의 목적을 위해, 본 발명의 여러 실시예가 아래의 도면들에 도시된다.
도 1은 전자 문서의 콘텐츠를 순서화된 리스트로 구조화하고, 순서화된 리스트를 이용하여 전자 문서 내의 연속 콘텐츠의 선택을 용이하게 하는 예시적인 시스템을 개념적으로 도시한다.
도 2는 프리미티브 요소들로부터 구조화된 여러 프리미티브 영역을 포함하는 문서의 페이지를 나타낸다.
도 3은 페이지 내의 프리미티브 영역들로부터 생성된 예시적인 순서화된 리스트를 개념적으로 나타낸다.
도 4는 도 2의 문서 페이지 상의 예시적인 연속 선택을 나타낸다.
도 5는 도 2의 문서 페이지에 기초하여 생성된 순서화된 리스트 내의 프리미티브 요소들의 연속 선택을 개념적으로 나타낸다.
도 6은 페이지 내의 일부 타입들의 영역들에 대한 시작 포인트들 및 종료 포인트들의 예들을 나타낸다.
도 7은 레이아웃 영역의 내부, 선행 및 후속 영역들의 예들을 나타낸다.
도 8은 4개의 상이한 시나리오에서의 시작 포인트 순서 관계의 일례를 나타낸다.
도 9는 페이지 내의 2개 영역 사이의 순서를 결정하기 위해 문맥 순서 관계를 이용하는 프로세스를 개념적으로 나타낸다.
도 10은 페이지의 좌표계와 정렬된 영역 및 페이지의 좌표계와 정렬되지 않은 다른 영역을 포함하는 페이지를 나타낸다.
도 11-13은 도 9에 도시된 프로세스에 의해 수행되는 바와 같은 주 영역과 보조 영역 사이의 순서의 결정을 나타낸다.
도 14는 시작 포인트 순서 관계 및 문맥 순서 관계를 이용하여 페이지 상의 다수의 영역을 순서화하기 위한 예시적인 프로세스를 개념적으로 나타낸다.
도 15는 예시적인 페이지 및 예시적인 페이지에 대응하는 예시적인 순서화된 리스트를 나타낸다.
도 16은 2개의 섹션을 갖는 페이지로부터의 순서화된 리스트의 생성을 나타낸다.
도 17은 시작 선택 포인트 및 종료 선택 포인트를 이용하여 페이지 상의 연속 선택을 수행하기 위한 프로세스를 개념적으로 나타낸다.
도 18은 시작 선택 포인트 및 종료 선택 포인트를 이용하는 페이지 상의 연속 선택을 나타낸다.
도 19는 여러 개의 예시적인 선택 포인트 및 프리미티브 영역을 나타낸다.
도 20은 선택 포인트의 y 변위에 기초하는 선택 포인트에 가장 가까운 프리미티브 영역의 결정을 나타낸다.
도 21은 레이아웃 영역이 그래픽 영역의 경계들 내에 포함될 때의 레이아웃 영역의 가장 가까운 프리미티브 영역으로서의 선택을 나타낸다.
도 22는 선택된 열을 갖지 않는 2개의 레이아웃 영역의 비교를 나타낸다.
도 23은 x 변위 값들의 다양한 결정들에 기초하는 프리미티브 영역들의 비교를 나타낸다.
도 24는 어느 레이아웃 영역이 선택 포인트로부터의 최소 x 변위를 갖는 선택된 열을 갖는지를 결정함에 의한 선택된 열들을 갖는 레이아웃 영역들의 비교를 나타낸다.
도 25는 다양한 기준들을 이용하여 선택 포인트에 가장 가까운 프리미티브 영역에 기초하여 선택 인덱스를 결정하기 위한 프로세스를 개념적으로 나타낸다.
도 26은 선택 포인트의 위치와 선택 인덱스의 결정 사이의 관계를 나타낸다.
도 27은 연속 선택의 종료시에 프리미티브 요소를 포함시킬지 또는 배제할지를 결정하는 예들을 나타낸다.
도 28은 일부 실시예들의 문서 편집 애플리케이션의 소프트웨어 아키텍처를 개념적으로 나타낸다.
도 29는 본 발명의 일부 실시예들을 구현하는 컴퓨터 시스템을 개념적으로 나타낸다.
아래의 설명에서는 설명의 목적을 위해 다양한 상세들이 설명된다. 그러나, 이 분야의 기술자는 본 발명이 그러한 특정 상세의 사용 없이도 실시될 수 있다는 것을 인식할 것이다. 다른 예들에서는, 불필요한 상세로 본 발명의 설명을 불명확하게 하지 않기 위해 공지 구조들 및 장치들은 블록도 형태로 도시된다. 본 명세서 전반에서, 판독 흐름의 2개의 주요 방향(좌에서 우로 그리고 이어서 위에서 아래로)은 서양 언어들에 기초하여 선택된다. 특히, 후술하는 일부 실시예들은 x 좌표에서의 비교 전에 y 좌표에서의 비교를 수행한다. 그러나, 통상의 기술자는 판독 흐름의 주요 방향들이 다른 언어들(예로서, 판독 흐름이 위에서 아래로 그리고 이어서 우에서 좌로인 동아시아 언어들)의 문서들을 수용하도록 변경될 수 있다는 것을 인식할 것이다. 이러한 예들에서, 일부 실시예들은 y 좌표에서의 비교 전에 x 좌표에서의 비교를 수행한다.
본 발명의 일부 실시예들은 문서의 콘텐츠를 체계화하는 방법을 제공한다. 프리미티브 영역들로 구조화된 콘텐츠를 갖는 문서 페이지에 대해, 이 방법은 프리미티브 영역들을 순서화된 리스트로 분류함으로써 문서 페이지의 콘텐츠를 체계화한다. 일부 실시예들에서, 이 방법은 제1 분류 기준들에 따라 프리미티브 영역들을 프리미티브 영역들의 시퀀스로 분류하고, 제2 분류 기준들에 따라 시퀀스 내의 연속하는 프리미티브 영역들을 전치한다. 이 방법은 전치된 프리미티브 영역들의 시퀀스에 기초하여 순서화된 리스트를 생성한다.
도 1은 전자 문서의 콘텐츠를 순서화된 리스트로 구조화하고, 순서화된 리스트를 이용하여 전자 문서 내의 연속 콘텐츠의 선택을 용이하게 하는 예시적인 시스템을 개념적으로 도시한다. 도 1은 도 2-5를 참조하여 설명된다. 도 1은 파서(110), 레이아웃 식별 모듈(120), 순서 분석 모듈(130) 및 문서 상호작용 및 표시 모듈(140)을 포함하는 예시적인 시스템(100)을 나타낸다. 문서 상호작용 및 표시 모듈(140)은 선택 모듈(150)을 포함한다.
파서(110)는 문서(105)를 수신하고, 이를 문자 그림문자들 또는 이미지들과 같은 다양한 프리미티브 요소들로 파싱한다. 일부 실시예들에서, 파서는 문서의 비트스트림을 수신하고, 이를 프리미티브 요소들로 파싱한다. 일부 실시예들에서, 파서(110)는 문서(105)로부터 사진들, 차트들 또는 다른 독립 이미지들과 같은 그래픽 요소들도 인식한다. 파서(110)는 인식된 데이터 요소들 및 이들의 문서 내의 기하학적 위치들에 기초하여 프리미티브 요소들(115)을 식별한다. 일부 실시예들에서, 파서에 의해 파싱되는 프리미티브 요소들(115)은 단어들, 텍스트 라인들, 단락들 및 열들과 같은 페이지 내의 콘텐츠에 대한 상위 레벨 정보도 포함한다. 일부 실시예들에서, 시스템(100)은 파서(105)를 포함하지 않으며, 따라서 그 대신에 레이아웃 식별 모듈(120)이 프리미티브 요소들(115)을 직접 수신한다.
레이아웃 식별 모듈(120)은 프리미티브 요소들(115)을 수신하고, 수신된 프리미티브 요소들을 프리미티브 영역들(125)의 집합으로 구조화한다. 일부 실시예들에서, 프리미티브 영역들은 페이지의 콘텐츠를 모델링하는 데 사용되는 상위 레벨 데이터 구조들이다. 페이지 상의 프리미티브 영역들은 서로 중첩될 수 있다. 이러한 영역들의 각각은 임의로 배치되고, 회전되며, 아니면 그 자신의 아핀 변환(affine transformation)에 의해 변환될 수 있다. 이러한 영역들은 레이아웃 영역들, 독립 형상들, 독립 이미지들, 및 섹션 또는 다형상 그래픽들과 같은 다양한 카테고리들의 영역들의 (잠재적으로 포개진) 그룹핑들을 포함한다. 일부 실시예들에서, 각각의 레이아웃 영역은 좌에서 우로 레이아웃된 열들의 연속이며, 각각의 열은 위에서 아래로 레이아웃된 단락들의 연속이고, 각각의 단락은 위에서 아래로 레이아웃된 텍스트 라인들의 연속이다. 각각의 텍스트 라인은 좌에서 우로 레이아웃된 단어들 및 인라인 그래픽들의 연속이고, 단어들은 좌에서 우로 레이아웃된 문자들의 연속이다. 프리미티브 요소들을 프리미티브 영역들로 구조화하기 위한 일부 실시예들의 방법은 본 명세서에 참고로 반영되는 미국 특허 출원 공개 2010/0174985에 설명되어 있다.
도 2는 프리미티브 요소들로부터 구조화된 여러 프리미티브 영역을 포함하는 문서의 페이지를 나타낸다. 도시된 바와 같이, 페이지(200)는 프리미티브 영역들 210(A1), 220(A2), 230(A3), 240(A4) 및 250(A5)을 포함한다. 프리미티브 영역(250)은 독립 이미지이다. 프리미티브 영역들(230, 240)은 텍스트를 포함하는 레이아웃 영역들이다. 특히, 레이아웃 영역(230)은 텍스트 열들(C1, C2, C3)을 포함하고, 레이아웃 영역(240)은 텍스트 열들(C4, C5)을 포함한다. 일부 실시예들에서, 레이아웃 식별 모듈은 열들(241-243) 내의 문자들로부터 레이아웃 영역(140)을 그리고 열들(231, 232) 내의 문자들로부터 레이아웃 영역(130)을 구조화하는 데 사용된다.
프리미티브 영역들의 각각은 시작 포인트를 갖는다(프리미티브 영역(210)은 시작 포인트(215)를 갖고, 프리미티브 영역(220)은 시작 포인트(225)를 갖고, 프리미티브 영역(230)은 시작 포인트(235)를 갖고, 프리미티브 영역(240)은 시작 포인트(245)를 갖고, 프리미티브 영역(250)은 시작 포인트(255)를 갖는다). 일부 실시예들에서, 프리미티브 영역의 시작 포인트는 프리미티브 영역의 좌상 코너에 있는데, 그 이유는 일반적으로 좌상 코너가 프리미티브 영역의 판독을 시작하는 곳이기 때문이다. 일부 실시예들에서, 레이아웃 영역의 시작 포인트는 좌상 코너가 아니라 텍스트의 시작이다(예로서, 레이아웃/프리미티브 영역(A4)의 시작 포인트(245)는 A4의 좌상 코너 대신에 단락(C1)의 시작에 있다).
도 1의 순서 분석 모듈(130)은 프리미티브 영역(125)을 수신하고, 수신된 프리미티브 영역들을 분류함으로써 순서화된 리스트(135)를 생성한다. 일부 실시예들에서, 순서 분석 모듈은 상이한 프리미티브 영역들의 시작 포인트의 위치를 비교함으로써 분류를 수행한다. 구체적으로, 프리미티브 영역들(210, 220, 230, 240, 250)의 시작 포인트들(215, 225, 235, 245, 255)을 서로 비교하여, 프리미티브 영역들 사이의 순서를 결정한다. 이것은 일부 실시예들에서 시작 포인트 순서 관계로서 지칭된다. 일부 실시예들은 어느 프리미티브 영역의 시작 포인트가 페이지의 최상부에 더 가까운지(즉, 더 높은 y 좌표값을 갖는지)를 결정함으로써 그러한 결정을 수행한다. y 좌표들의 비교가 어느 페이지가 먼저 나와야 하는지를 결정하지 못하는 경우(예를 들어, 2개의 프리미티브 영역이 동일한 y 좌표의 시작 포인트들을 갖는 경우), 일부 실시예들은 시작 포인트들의 수평 위치들(즉, x 좌표들)을 이용하여 어느 프리미티브 영역이 순서화된 리스트에 먼저 나와야 하는지를 결정한다. 일부 실시예들에서, 시작 포인트의 비교는 서양 언어들의 판독 흐름의 방향을 에뮬레이트하기 위해 이 순서로(즉, 위에서 아래로 그리고 이어서 좌에서 우로) 수행된다. 통상의 기술자는 시작 포인트들의 비교가 다른 언어들(예로서, 판독 흐름이 위에서 아래로 그리고 이어서 우에서 좌로인 동아시아 언어들)의 문서들을 수용하도록 변경될 수 있다는 것을 인식할 것이다. 시작 포인트 순서는 섹션 I-A에서 그리고 도 8을 참조하여 아래에 더 설명된다.
일부 실시예들에서, 순서 분석 모듈(130)은 페이지 내의 프리미티브 요소들 및 프리미티브 영역들의 판독 흐름에 따라 분류 결과를 더 정밀화한다. 페이지에 대한 프리미티브 영역의 배향은 프리미티브 영역의 주요 판독 흐름을 결정한다. 일부 실시예들에서, 레이아웃 영역은 그의 계층 구조 내의 각각의 레벨(예로서, 열들, 단락들, 텍스트 라인들 등)에서 새로운 판독 흐름 방향을 설정한다. 각각의 설정된 판독 흐름은 프리미티브 영역들 간의 순서에 영향을 미친다. 결과적으로, 시작 포인트들의 비교는 페이지 내의 판독 흐름과 일치하는 프리미티브 영역의 순서를 반드시 생성하지는 않는다. 따라서, 순서 분석 모듈(130)은 판독 흐름에 따라 프리미티브 영역들을 식별 및 재순서화함으로써 시작 포인트 비교에 의해 생성된 순서를 정밀화한다. 판독 흐름에 따른 프리미티브 영역들의 분류는 문맥 관계 순서화로서 알려져 있으며, 이는 섹션 I-B에서 그리고 도 9-14를 참조하여 아래에 더 설명된다.
도 2의 예시적인 문서 페이지(200)의 경우, 시작 포인트 순서 관계에 따른 분류는 순서 A1->A2->A3->A4->A5에 따라 5개의 프리미티브 영역을 분류하는데, 그 이유는 A1의 시작 포인트가 A2의 시작 포인트보다 높고, A2의 시작 포인트가 A3의 시작 포인트보다 높고, A3의 시작 포인트가 A4의 시작 포인트보다 높고, A4의 시작 포인트가 A5의 시작 포인트보다 높기 때문이다. 그러나, 페이지(200)를 판독하는 인간 판독자는 A4 및 A3의 텍스트 흐름을 따르고, A1->A4->A3->A2->A5의 순서로 판독했을 것이다. 더구나, 페이지(200)를 판독하는 사람은 A3이 다른 프리미티브 영역들에 대해 경사진 것을 인식하고, A3의 경사 또는 회전에 따라 텍스트의 흐름을 따르려고 시도할 것이다.
따라서, 시작 포인트 순서 관계들에만 기초하여 순서화된 리스트를 생성하는 대신에, 일부 실시예들은 문맥 순서 관계에 따라 분류 결과를 정밀화하며, 이는 프리미티브 영역들 각각 내의 판독 흐름에 따라 상이한 프리미티브 영역들 간의 순서를 설정한다. 일부 실시예들은 각각의 프리미티브 영역에 대한 선행 영역 및 후속 영역을 정의하고, 이웃 영역의 시작 포인트가 프리미티브 영역의 후속 영역 또는 선행 영역 내에 있는지를 결정함으로써 문맥 순서 관계 분류를 수행한다. 선행 영역 및 후속 영역의 정의는 프리미티브 영역의 판독 흐름에 기초한다(따라서, 영역의 경사를 고려한다). 예시적인 페이지(200)에서, A3의 선행 영역은 판독 흐름에서 A3의 좌상의 영역으로서 정의되고, A3의 후속 영역은 판독 흐름에서 A3의 우하의 영역으로서 정의된다. 프리미티브 영역(A2)은 레이아웃 영역(A3)을 따르는데, 그 이유는 A2의 시작 포인트(225)가 A3의 후속 영역 내에 있기 때문이다. 레이아웃 영역(A4)은 레이아웃 영역(A3)에 선행하는데, 그 이유는 A4의 시작 포인트(245)가 A3의 선행 영역 내에 있기 때문이다. 따라서, 문맥 순서 관계에 기초하는 순서는 A1->A4->A3->A2->A5이다.
도 3은 도 2의 페이지(200) 내의 프리미티브 영역들로부터 생성된 예시적인 순서화된 리스트를 개념적으로 나타낸다. 도 3에 도시된 순서화된 리스트(300)는 트리 구조에 의해 표현된다. 통상의 기술자는 순서화된 리스트가 표, 어레이, 링크된 리스트, 또는 프리미티브 영역들 간의 순차적인 관계를 나타낼 수 있는 임의의 다른 데이터 객체 모델링 구조체로서 표현될 수도 있다는 것을 인식할 것이다. 예로서, 아래의 도 15 및 16은 어레이들(1550, 1640)에 의해 표현된 순서화된 리스트를 나타낸다.
페이지(200)로부터 생성된 순서화된 리스트는 루트 노드 및 여러 개의 자식 노드를 포함하는 트리 구조(300)에 의해 표현된다. 루트 노드(205)는 페이지(210)에 대응하고, 자식 노드들(310, 320, 330, 340, 350)은 프리미티브 영역들(210, 220, 230, 240, 250)에 각각 대응한다. 자식 노드(340)는 열들(241-243)에 대응하는 손자 노드들(341-343)을 갖는다. 자식 노드(230)는 열들(341, 243)에 대응하는 손자 노드들(331, 332)을 갖는다. 순서화된 리스트 내의 자식 노드들은 순서 분석 모듈(130)에 의해 수행된 분류 작업에 따라 좌에서 우로(점선들로 지시되는 바와 같은 A1->A4->A3->A2->A5) 순서화된다. 일부 실시예들에서, 하나의 프리미티브 영역의 모든 프리미티브 요소들은 이전 프리미티브 영역 내의 모든 프리미티브 요소들 뒤에 있는 것으로 간주된다. 따라서, 영역(A4)의 열들(C1, C2, C3)은 순서화된 리스트(300)에서 영역(A3)의 열들(C4, C5) 앞에 있다. 일부 실시예들에서, 계층 구조에서 영역(A4) 내의 열들보다 낮은 프리미티브 요소들(예로서, 단락들, 텍스트 라인들, 그림문자들 등)도 영역(A3) 내의 프리미티브 요소들 앞에 있는 것으로 간주된다.
프리미티브 영역 내의 프리미티브 요소들은 프리미티브 영역에서의 판독 순서에 따라 분류된다. 본 명세서에 참고로 반영된 미국 특허 출원 공개 2010/0174985에 설명된 바와 같이, 문자 그림문자들 및 그래픽 프리미티브들의 위치 및 크기만으로 시작함으로써 레이아웃 영역 내의 요소들의 판독 순서를 포함하는 레이아웃 영역의 요소들 모두를 재구성할 수 있다. A4 아래의 열들은 (점선들로 지시되는 바와 같은) 판독 순서 C1->C2->C3에 따라 분류되고, A3 아래의 열들은 판독 순서 C4->C5에 따라 분류된다. 순서화된 리스트 내의 모든 프리미티브 영역들이 분류되고, 각각의 프리미티브 영역 내의 프리미티브 요소들도 분류되므로, 순서화된 리스트는 하나의 연속 리스트 내에 모든 프리미티브 요소들을 효과적으로 링크한다.
일부 실시예들에서, 각각의 프리미티브 영역의 각각의 요소는 순서화된 리스트에서 순서 인덱스에 의해 표현된다. 순서 인덱스들은 순서화된 리스트 내의 프리미티브 영역들의 순서에 따라 그리고 각각의 프리미티브 영역 내의 문서 요소들의 순서에 따라 할당된다. 일부 실시예들에서, 순서화된 리스트 내의 프리미티브 영역들은 페이지 내의 가시적 분할기들에 의해 부과되는 섹션들에 따라 그룹핑된다. 이러한 실시예들 중 일부에서, 순서 인덱스들은 프리미티브 영역들의 그룹핑에 따라 할당된다. 페이지 내의 가시적 분할기들에 의한 프리미티브 영역들의 그룹핑은 도 16을 참조하여 아래에 더 설명된다.
도 1의 문서 상호작용 및 표시 모듈(140)은 순서 분석 모듈에 의해 생성된 순서화된 리스트(135)를 수신한다. 일부 실시예들에서, 문서 상호작용 및 표시 모듈은 또한 레이아웃 식별 모듈(120)에 의해 생성된 프리미티브 영역들(125) 및 파서(110)에 의해 추출된 프리미티브 요소들(115)을 수신하거나 이들에 대한 액세스를 갖는다. 수신된 순서화된 리스트 및/또는 프리미티브 요소들 및 영역들에 기초하여, 문서 상호작용 및 표시 모듈(140)은 문서의 콘텐츠의 표시를 가능하게 하고, 문서와의 상호작용을 용이하게 한다.
일부 실시예들에서, 문서 상호작용 및 표시 모듈은 콘텐츠 선택 모듈(150)을 포함하며, 이는 문서 내의 콘텐츠의 선택, 검색, 내비게이팅, 재흐름, 복사/붙이기, 변환 또는 편집과 같은 기능들을 수행한다. 하나의 특정 레이아웃 영역 내에서 이러한 소프트웨어 기능들을 수행하기 위한 방법들이 본 명세서에 참고로 반영된 미국 특허 출원 공개 2010/0174983에 설명되어 있다. 순서화된 리스트(135)를 사용함으로써, 콘텐츠 선택 모듈(150)은 상이한 프리미티브 영역들에 걸치는 문서 콘텐츠에 대해서도 그러한 작업들을 수행한다.
일부 실시예들에서, 콘텐츠 선택 모듈(150)은 순서화된 리스트 내의 프리미티브 요소들을 참조함으로써 문서 콘텐츠의 선택을 정의한다. 순서화된 리스트는 하나의 연속 리스트 내에 모든 프리미티브 요소들을 링크하므로, 콘텐츠 선택 모듈(150)은 순서화된 리스트의 하나의 연속 섹션 내의 프리미티브 요소들을 연속 콘텐츠로서 처리한다. 따라서, 이러한 실시예들 중 일부에서, 문서 내의 연속 콘텐츠의 선택(또는 문서 내의 콘텐츠의 연속 선택)은 순서화된 리스트 내의 연속 섹션에 의해 정의될 수 있다. 일부 실시예들은 연속 선택에서의 최초 및 최종 프리미티브 요소들에 의해 연속 선택을 정의한다. 일부 실시예들은 순서화된 리스트를 참조하는 한 쌍의 인덱스에 의해 연속 선택에서의 최초 및 최종 프리미티브 요소들을 식별한다.
일부 실시예들에서, 콘텐츠 선택 모듈(150)은 문서 내의 콘텐츠 요소들을 선택하기 위해 시작 선택 포인트 및 종료 선택 포인트를 이용함으로써 연속 선택을 수행한다. 일부 실시예들에서, 시작 및 종료 선택 포인트들은 GUI 환경에서 결정된다. 일부 실시예들은 선택 작업을 시작할 때(예로서, 사용자가 선택 작업 동안에 처음 마우스 버튼을 누르거나 터치 스크린을 터치할 때)의 커서의 위치에 의해 시작 선택 포인트를 그리고 선택 작업을 끝낼 때(예로서, 사용자가 선택 작업 동안에 마우스 버튼의 누름을 해제하거나 터치 스크린의 터치를 중지할 때)의 커서의 위치에 의해 종료 선택 포인트를 결정한다.
도 4는 도 2의 문서 페이지(200) 상의 예시적인 연속 선택을 나타낸다. 전술한 바와 같이, 페이지(200)는 프리미티브 영역들(A1-A5)을 포함하고, 프리미티브 영역(A4)은 열들(C1, C2, C3)을 포함하고, 프리미티브 영역(A3)은 열들(C4, C5)을 포함한다. 열들(C3, C4, C5) 및 프리미티브 영역들(A3, A2, A5)은 이들이 연속 선택의 일부로서 선택된 것을 지시하기 위해 강조된 상태로 도시되어 있다. 도 4는 또한 연속 선택을 결정하는 데 사용되는 시작 선택 포인트(410)(삼각형으로 도시됨) 및 종료 선택 포인트(420)('X'로서 표시됨)를 도시한다. 통상의 기술자는 도 4의 시작 선택 포인트 및 종료 선택 포인트의 도시가 설명의 목적을 위한 것임을 인식할 것이다. 일부 실시예들은 시작 선택 포인트 및/또는 종료 선택 포인트를 표시하지 않는다. 일부 다른 실시예들은 직사각형 선택 박스의 코너들과 같은 다른 시각적 큐들을 이용하여 시작 선택 포인트 및 종료 선택 포인트를 표시한다.
일부 실시예들은 페이지 내의 어느 프리미티브 요소들이 판독 순서에서 선택 포인트들에 가장 가까운지를 결정함으로써 연속 선택에서의 최초 및 최종 프리미티브 요소들을 결정한다. 도 4의 예에서, 콘텐츠 선택 모듈(150)은 영역(A4)의 열(C3) 내의 제1 문자 그림문자를 판독 순서에서 시작 선택 포인트(410)에 가장 가까운 프리미티브 요소로서 그리고 영역(A5) 내의 이미지를 판독 순서에서 종료 선택 포인트(420)에 가장 가까운 프리미티브 요소로서 식별한다. 즉, C3의 시작 및 A5의 끝은 연속 선택에서의 최초 및 최종 프리미티브 요소들로서 식별된다. 이어서, 일부 실시예들은 식별된 최초 및 최종 프리미티브 요소를 이용하여, 순서화된 리스트를 이용함으로써 연속 선택에서의 모든 프리미티브 요소들 및 프리미티브 영역들을 식별한다.
도 5는 문서 페이지(200)에 기초하여 생성된 순서화된 리스트(300) 내의 프리미티브 요소들의 연속 선택을 개념적으로 나타낸다. 도시된 바와 같이, 노드(343)(열(C3)을 나타내는 노드)와 노드(350)(프리미티브 영역(A5)을 나타내는 노드) 사이의 순서화된 리스트(300) 내의 모든 노드들은 (C3, A3, C4, C5, A2 및 A5를 나타내는 노드들의 강조에 의해 지시되는) 연속 선택의 일부이다. 콘텐츠 선택은 섹션 II에서 아래에 더 설명된다.
본 발명을 더 설명하기 전에, 일부 실시예들에서 사용되는 여러 아이템 및 개념이 먼저 소개되고 설명될 것이다. 일부 실시예들은 페이지 상의 콘텐츠(예로서, 단락, 하나 이상의 단락을 포함하는 열, 하나 이상의 열을 포함하는 레이아웃 등)의 경계들을 콘텐츠를 포함하는 최소 직립 직사각형인 것으로 정의한다. 이러한 실시예들 중 일부는 직사각형의 변들이 콘텐츠의 국지적 좌표계의 축에 평행할 때 경계들을 "직립"인 것으로 정의한다. 게다가, 일부 실시예들은 레이아웃 영역의 시작 포인트를 그의 최초 열의 경계들의 좌상 코너로서 그리고 종료 포인트를 그의 최종 열의 경계들의 우하 코너로서 정의한다. 경계의 "좌상" 및 "우하" 코너들은 레이아웃 영역의 국지적 좌표에 기초하여 정의된다. 형상, 이미지 또는 형상들 및 이미지들의 그룹과 같이 레이아웃 영역들이 아닌 다른 타입의 영역들의 경우, 시작 포인트는 일부 실시예들에 의해 국지 좌표에서 영역의 경계들의 좌상 코너로서 정의된다. 마찬가지로, 이러한 논-레이아웃 타입의 영역들의 종료 포인트는 일부 실시예들에 의해 국지 좌표에서 영역의 경계들의 우하 코너로서 정의된다.
일부 실시예들에서, 도 6은 페이지 내의 일부 타입들의 영역들에 대한 시작 포인트들 및 종료 포인트들의 예들을 나타낸다. 도 6은 영역들(610, 620, 630)을 포함하는 페이지(600)를 나타낸다. 영역(610)은 시작 포인트(612) 및 종료 포인트(614)를 갖는다. 영역(620)은 시작 포인트(622) 및 종료 포인트(624)를 갖는다. 영역(630)은 시작 포인트(632) 및 종료 포인트(634)를 갖는다.
영역(610)은 사람의 그래픽 표현을 포함하지만, 텍스트는 포함하지 않는다. 일부 실시예들은 그러한 영역을 레이아웃 영역이 아니라 그래픽 영역으로 분류한다. 그래픽 영역(610)의 시작 포인트(612)는 그래픽 영역의 좌상 코너로서 정의되고, 그래픽 영역(610)의 종료 포인트(614)는 그래픽 영역의 우하 코너로서 정의된다. 일부 실시예들에서, "상", "하", "좌", "우"의 정의는 그래픽 영역(610)의 국지적 좌표계(도시되지 않음)를 기준으로 한다. 그래픽 영역(610)은 페이지에 대해 회전되지 않으므로, 그래픽 영역(610)의 국지적 좌표계에 따른 상/하/좌/우의 정의는 페이지(600)의 좌표계(680)에 따른 상/하/좌/우의 정의와 동일할 것이다.
영역(620)은 텍스트(661-664)의 여러 열을 포함한다. 일부 실시예들은 그러한 영역을 레이아웃 영역으로 분류한다. 그래픽 영역(610)과 달리, 레이아웃 영역(620)의 시작 및 종료 포인트들은 영역의 좌상 코너 및 우하 코너에 의해 정의되지 않는다. 대신에, 레이아웃 영역(620)의 시작 포인트(622)는 최초 열(661)의 경계들(651)의 좌상 코너에 의해 정의된다. 레이아웃 영역(620)의 종료 포인트(624)는 최종 열(664)의 경계들(654)의 우하 코너에 의해 정의된다. 레이아웃 영역(620)은 페이지에 대해 회전되지 않으므로, 레이아웃 영역(620)의 국지적 좌표계(도시되지 않음)에 따른 상/하/좌/우의 정의는 페이지(600)의 좌표계(680)에 따른 상/하/좌/우의 정의와 동일할 것이다.
영역(630)도 텍스트(665-667)의 여러 열을 포함한다. 일부 실시예들은 이러한 영역(630)을 영역(620)과 유사한 레이아웃 영역으로 분류한다. 레이아웃 영역(620)과 같이, 레이아웃 영역(630)의 시작 포인트(632)는 최초 열(665)의 경계들(655)의 좌상 코너에 의해 정의되고, 레이아웃 영역(630)의 종료 포인트(634)는 최종 열(667)의 경계들(657)의 우하 코너에 의해 정의된다.
그러나, 레이아웃 영역(620)과 달리, 레이아웃 영역(630)은 페이지(600)에 대해 회전된다. 회전된 영역(630)에 대한 상/하/좌/우의 정의는 페이지(600)의 좌표계(680)가 아니라 회전된 영역(630)의 회전된 국지 좌표계(683)를 기준으로 한다. 시작 포인트 및 종료 포인트의 정의도 이러한 회전된 좌표계(683)에 기초한다.
일부 실시예들은 또한 영역의 내부 영역, 선행 영역 및 후속 영역을 정의한다. 레이아웃 영역이 아닌 영역의 경우, 영역의 내부 영역은 일부 실시예들에서 영역의 경계들 안쪽에 있는 영역으로서 정의된다. 레이아웃 영역의 경우, 내부 영역은 레이아웃 영역의 경계들 안쪽의 영역 - 최초 열의 경계들 바로 위의 그리고 최종 열의 경계들 바로 아래의 공간으로서 정의된다. (이들의 구성 부분들과 달리, 레이아웃 영역 경계들은 직사각형들로 적절히 근사화되지 않는데, 그 이유는 각각의 열이 다른 열들과 다른 높이들에서 시작하고 끝날 수 있고, 그의 콘텐츠가 다른 영역들과 같은 장애물들 주위를 흐르는 레이아웃 내에 큰 여백들이 존재할 수 있기 때문이다.) 영역의 선행 영역은 내부 영역의 위 또는 바로 좌측의 포인트들의 자취이고, 후속 영역은 내부 영역의 아래 또는 바로 우측의 포인트들의 자취이다.
도 7은 레이아웃 영역(720)의 내부, 선행 및 후속 영역들의 예들을 나타낸다. 도시된 바와 같이, 페이지(700)는 그래픽 영역(710) 및 레이아웃 영역들(720, 730)을 포함한다. 레이아웃 영역(720)은 텍스트 열들(761-764)을 포함한다. 최초 열(761)은 경계들(751)을 갖고, 최종 열(764)은 경계들(754)을 갖는다. 레이아웃 영역(720)의 내부 영역은 점선 경계(740)에 의해 둘러싸이며, 이는 일부 실시예들에서 4개의 열(761-764) 모두를 포함할 수 있는 최소 직립 직사각형 - 최초 열의 경계들 바로 위의 그리고 최종 열의 경계들 바로 아래의 공간에 의해 정의된다(따라서, 레이아웃 영역(720)의 좌상 코너 및 우하 코너는 내부 영역의 일부가 아니다). 내부 영역의 좌상 영역은 레이아웃 영역(720)의 선행 영역으로서 정의되며, 내부 영역의 우하 영역은 레이아웃 영역(720)의 후속 영역으로서 정의된다. 따라서, 그래픽 영역(710)은 선행 영역이고, 레이아웃 영역(730)은 레이아웃 영역(720)의 후속 영역이다.
레이아웃 영역(720)의 경우, 선행 영역(즉, 내부 영역의 좌상 영역) 및 후속 영역(즉, 내부 영역의 우하 영역)의 정의는 일부 실시예들에서 페이지(700)가 아니라 상/하/좌/우의 정의에 대해 레이아웃 영역(720)에 국지적인 좌표계를 기준으로 한다. 도 7에 도시된 예에서, 레이아웃 영역(720)은 페이지(700)와 정렬되지 않으며, 따라서 페이지(700)에 따른 상/하/좌/우의 정의는 레이아웃(720)에 따른 상/하/좌/우의 정의와 반드시 일치하지는 않을 것이다. 이러한 상황들에서의 선행 및 후속 영역들의 정의는 일부 실시예들에서 페이지(700)가 아니라 레이아웃 영역(720)의 상/하/좌/우의 정의를 기준으로 한다.
일부 실시예들의 더 상세한 예들이 아래에 설명된다. 섹션 I은 시작 포인트 순서 관계 및 문맥 순서 관계에 따른 문서 페이지 내의 영역들의 순서화를 설명한다. 이어서, 섹션 II는 시작 선택 포인트 및 종료 선택 포인트를 이용함에 의한 순서화된 리스트의 연속 섹션에서의 문서 요소들의 연속 선택을 설명한다.
I. 콘텐츠 순서화
문서의 상이한 프리미티브 영역들에 걸쳐 문서 내의 콘텐츠에 대한 작업들(콘텐츠의 선택, 검색, 내비게이팅, 재흐름, 복사/붙이기, 변환 또는 편집과 같은 작업들)을 용이하게 하기 위하여, 일부 실시예들은 먼저 상이한 프리미티브 영역들 사이의 순서를 설정한다. 일부 실시예들은 상이한 프리미티브 영역들의 시작 포인트의 위치(시작 포인트 순서 관계)를 비교함으로써 프리미티브 영역들을 분류한다. 일부 실시예들은 프리미티브 영역들 각각 내의 판독 흐름(문맥 순서 관계)에 따라 상이한 프리미티브 영역들 사이의 순서를 설정한다. 일부 실시예들은 먼저 시작 포인트 순서 관계를 이용하여 프리미티브 영역들을 분류하고, 이어서 문맥 순서 관계를 이용하여 분류 결과를 수정한다. 수정된 분류 결과에 기초하여 순서화된 리스트가 구성된다.
A. 시작 포인트 순서 관계
일부 실시예들에서, 주어진 영역(A1)은 사람이 다른 영역 A2를 판독하기 전에 A1의 판독을 시작할 것으로 예상되는 경우에(A2의 판독 전에 A1의 판독을 종료할지에는 관계 없으며, 이는 A2가 논리적으로 A1 내에 포함되는지에 의존할 수 있다) 판독 순서에서 A2 앞에 있는 것으로 간주된다. 일부 실시예들은 A1을 A2 앞에 있는 것으로 지정하는 순서 관계를 갖는 것으로서 A1 및 A2를 참조한다. 그러한 순서 관계의 일례는 시작 포인트 순서 관계이다. 일부 실시예들의 시작 포인트 순서 관계에 따르면, A1 및 A2는 페이지 좌표에서 그들 각각의 시작 포인트들 (x1,y1) 및 (x2,y2)에 의해 순서화된다. 페이지의 우측을 지시하는 x축 및 위를 지시하는 y축을 갖는 페이지 좌표계의 경우, 시작 포인트 순서 관계는 (i) y1>y2 또는 (ii) y1=y2 및 x1<x2인 경우에만 A1<A2인(영역 A1이 영역 A2 앞에 있는) 것으로 지정한다. 일부 실시예들에서, x 좌표들은 y1 및 y2가 서로 충분히 가까운 경우에(즉, A1 및 A2의 수직 위치들이 크게 다르지 않은 경우에) 시작 포인트 순서를 결정하는 데 사용된다. 이러한 실시예들 중 일부는 (i) y1-y2≥ε 또는 (ii)|y1-y2|<ε 및 x1<x2인 경우에만 A1<A2를 지정하며, 여기서 ε는 양의 임계치이다. 일부 실시예들에서, ε은 영역들 A1 및/또는 A2 내의 텍스트의 평균 또는 중간 높이에 기초하여 결정된다. (예를 들어, A1 및 A2 내의 텍스트의 평균 높이가 1/8인치인 경우, A1 및 A2는 A1 및 A2의 시작 포인트들의 y 좌표들이 1/8인치 미만만큼 상이한 경우에 동일 수직 위치를 갖는 것으로 간주된다.)
도 8은 4개의 상이한 시나리오(801-804)에서의 시작 포인트 순서 관계의 일례를 나타낸다. 4개의 시나리오 각각은 제1 레이아웃 영역(810) 및 제2 레이아웃 영역(820)을 포함하는 페이지(800)를 나타낸다. 제1 레이아웃 영역(810)(A1)은 (x1,y1)에 시작 포인트를 갖고, 제2 레이아웃 영역(820)(A2)은 (x2,y2)에 시작 포인트를 갖는다. (x1,y1) 및 (x2,y2) 양자는 페이지(800)의 좌표계 내의 좌표들이다. 레이아웃 영역(810)은 열들(831-834)도 포함한다.
제1 시나리오(801)에서, 영역(A1)의 시작 포인트 (x1,y1)은 영역(A2)의 시작 포인트 (x2,y2)의 위에 있다(즉, y1>y2). 따라서, 영역(A1)은 시작 포인트 순서 관계에 따라 A2 앞에 있다(A1<A2).
제2 시나리오(802)에서, 영역(A1)의 시작 포인트 (x1,y1)은 영역(A2)의 시작 포인트 (x2,y2)와 동일 레벨에 있다(즉, y1=y2). 이 시나리오에서 2개의 영역의 y 좌표들은 동일하며, 순서를 결정하는 데 사용될 수 없으므로, 일부 실시예들은 x 좌표들을 대신 이용하여 영역들(A1, A2) 사이의 순서를 결정한다. A2가 A1의 우측에 있으므로(즉, x2>x1), 영역 A1은 시작 포인트 순서 관계에 따라 A2의 앞에 있다(A1<A2로 표시됨).
제3 시나리오(803)에서, 영역 A1의 시작 포인트 (x1, y1)은 영역 A2의 시작 포인트 (x2,y2) 아래에 있다. 시작 포인트 순서 관계에 따르면, A2는 A1 앞에 있는 것으로 간주될 것이다. 그러나, A2의 상부 코너는 A1의 상부 경계 아래에 있으므로, 사람 판독자는 일반적으로 A2에 앞서 A1을 읽을 것이다. 따라서, 일부 실시예들은 2개의 영역 사이의 시작 포인트 순서 관계를 무시함으로써 순서화된 리스트에서 A1을 여전히 A2 앞에 배치한다.
제4 시나리오(804)에서, 영역 A1의 시작 포인트 (x1,y1)는 또한 영역 A2의 시작 포인트 (x2,y2) 아래에 있다(즉, y1<y2). 시작 포인트 순서 관계에 따르면, A2는 또한 A1 앞에 있는 것으로 간주될 것이다. 그러나, (A2가 A1의 "콜-아웃(call-out)"일 때와 같이) A2가 A1의 경계들 내에 있으므로, 판독자는 이 상황에서 A2에 앞서 A1을 판독할 것이다. 따라서, 일부 실시예들은 A1의 시작 포인트가 A2의 시작 포인트 아래에 있는 경우에도 A1을 A2 앞에 있는 것으로 지정한다.
803 및 804와 유사한 시나리오들에서의 이러한 실시예들의 일부는 영역들 사이의 문맥 순서 관계를 검사함으로써 시작 포인트 순서 관계를 무시하기로 결정한다. 이제, 문맥 순서 관계가 설명된다.
B. 문맥 순서 관계
시작 포인트 순서 관계는 때때로 비직관적인 결과들을 산출하며, 실제의 인간이 문서의 페이지를 읽는 순서를 모방하지 못한다. 도 8에 도시된 예에서, 시작 포인트 순서 관계는 양 시나리오(803, 804)에서 A2가 A1 앞에 있을 것을 요구하지만, 실제의 사람은 A2에 앞서 A1을 판독할 것이다. 일반적으로, 시작 포인트 순서 관계는 영역들 중 하나 이상의 영역의 콘텐츠의 흐름 순서에 대한 암시적인 의존성이 존재하도록 하나 이상의 영역들이 배치 및/또는 변환될 때 사람의 판독 순서를 모방하지 못할 수 있다. 따라서, 일부 실시예들은 프리미티브 영역들의 콘텐츠의 흐름 순서를 검사하는 문맥 순서 관계를 이용하여 순서를 설정한다.
일부 실시예들에서, 문맥 순서 관계는 시작 포인트 순서 관계에 더하여 또는 그 대신에 영역들 사이의 순서들을 정의하는 데 사용된다. 문맥 순서 관계는 이러한 실시예들 중 일부에서 페이지 내의 2개의 영역 각각의 국지 좌표계를 이용하여 2개 영역 사이의 순서를 결정하는 순서화 스킴이다. 도 9는 페이지 내의 제1 영역(A1)과 제2 영역(A2) 사이의 순서를 결정하기 위해 문맥 순서 관계를 이용하는 프로세스(900)를 개념적으로 나타낸다. 프로세스(900)는 도 8을 참조하여 설명된다.
도 9의 프로세스(900)는 (910에서) 제1 영역의 국지 좌표계에서 2개의 영역의 시작 포인트들을 비교하여 순서를 결정한다. 이어서, 프로세스는 (920에서) 제2 영역의 국지 좌표계에서 2개의 영역의 시작 포인트들을 비교하여 순서를 결정한다. 일부 실시예들에서, 국지 좌표계들 중 어느 하나에서의 2개 영역의 시작 포인트들의 비교는 상이한 좌표계의 사용 외에는 전술한 시작 포인트 순서 관계 비교와 유사하다. 예를 들어, 제1 영역의 시작 포인트가 제2 영역의 시작 포인트의 y 좌표 위인 y 좌표를 갖는 경우, 제1 영역은 제2 영역 앞에 있는 것으로 간주되며, 2개 영역의 시작 포인트들의 y 좌표들이 동일한 경우, 프로세스는 2개 영역의 시작 포인트들의 x 좌표들을 비교한다.
이어서, 프로세스는 (930에서) 2개의 국지 좌표계가 어느 영역이 제1 시작 포인트를 갖는지에 관하여 일치하는지를 결정한다. 위에 도 8에서 설명된 예시적인 시나리오들(801-804)에서, A1 및 A2의 국지 좌표계들은 어느 영역이 제1 시작 포인트를 갖는지에 관하여 일치하는데, 그 이유는 2개의 영역이 정렬되기 때문이다. 2개의 국지 좌표계가 어느 영역이 제1 시작 포인트를 갖는지에 관하여 일치하는지에 대한 결정은 도 5와 관련하여 아래에 더 설명된다. 2개의 국지 좌표계가 2개 영역의 순서에 대해 일치하는 경우, 프로세스는 935로 진행하여, 제1 시작 포인트를 갖는 영역을 주요 영역으로 지정하고, 제2 시작 포인트를 갖는 영역을 보조 영역으로 지정한다. 한편, 2개의 국지 좌표계가 2개 영역의 순서에 대해 일치하지 않는 경우, 프로세스는 940으로 진행한다.
프로세스(900)는 (940에서) 2개의 국지 좌표계가 2개 영역의 순서에 대해 일치하지 않을 때 페이지 좌표에서 시작 포인트들의 순서를 평가한다. 2개의 좌표계가 일치하지 않을 때 페이지 좌표에서의 순서는 필연적으로 하나의 영역의 좌표에서의 순서와 일치하지 않고, 다른 영역의 좌표에서의 순서와 일치하므로, 프로세스는 (950에서) 페이지 좌표계와 일치하지 않는 국지 좌표계를 갖는 영역을 주요 영역으로 지정한다. 프로세스는 또한 (955에서) 페이지 좌표계와 일치하는 국지 좌표계를 갖는 영역을 보조 영역으로 지정한다.
주요 및 보조 영역들을 지정한 후에, 프로세스(900)는 이어서 (960에서) 주요 영역의 시작 포인트가 보조 영역의 선행 영역 내에 있는지를 결정한다. 그러한 경우, 프로세스는 (985에서) 주요 영역이 보조 영역 앞에 있음을 보고한다. 그렇지 않은 경우, 프로세스는 970으로 진행한다. 아래의 도 7은 보조 영역의 선행 영역 내의 주요 영역의 시작 포인트의 일례를 나타낸다.
프로세스는 (970에서) 주요 영역의 시작 포인트가 보조 영역의 후속 영역 내에 있는지를 결정한다. 그러한 경우, 프로세스는 (980에서) 보조 영역이 주요 영역 앞에 있음을 보고한다. 그렇지 않은 경우, 프로세스는 975로 진행한다. 위의 도 8에서 설명된 예시적인 시나리오(803)에서, A2의 시작 포인트가 A1의 시작 포인트 앞에 있으므로(y2>y1), A2는 주요 영역(P)이고, A1은 보조 영역(S)이다. 그러나, 주요 영역인 A2는 보조 영역(A1)의 후속 영역 내에 있으므로, A1은 문맥 순서 관계에서 A2 앞에 있는 것으로 보고될 것이다. 아래의 도 6은 주요 영역의 시작 포인트가 보조 영역의 후속 영역 내에 있을 때의 일례를 나타낸다.
프로세스는 (975에서) 주요 영역(P) 및 보조 영역(S)의 내부 영역들 간의 상호작용들이 보조 영역(S)이 주요 영역(P) 앞에 있음을 지시하는지를 결정한다. P의 시작 포인트가 S의 내부 영역에 있을 때, 일부 실시예들은 P의 내부 영역이 완전히 S의 좌표에서 중복 수평 범위를 갖는 S의 모든 열들 위에 있는지 그리고 그러한 열이 둘 이상 존재하는지에 기초하여 그러한 결정을 행한다. 그러한 경우, 프로세스는 (985에서) 주요 영역이 보조 영역 앞에 있는 것으로 보고한다. 그렇지 않은 경우, 프로세스는 (980에서) 보조 영역이 주요 영역 앞에 있는 것으로 보고한다. 주요 및 보조 영역들 간의 순서를 보고한 후에, 프로세스(900)는 종료된다.
위의 도 8에서 설명된 예시적인 시나리오(804)에서, (y1<y2이므로) A2는 제1 시작 포인트를 가지며, 따라서 주요 영역(P)으로 지정된다. 따라서, A1은 보조 영역(S)으로 지정된다. P(A2)의 시작 포인트는 S(A1)의 내부 영역 내에 있지만, S(A1)는 완전히 P(A2) 아래에 있는, P(A2)와 중복 수평 범위를 갖는 하나의 열만을 갖는다(열(832)은 완전히 P(A2) 아래에 있는, P(A2)와 중복 수평 범위를 갖는 S(A1)의 유일한 열이며, A1의 열들(831, 833, 834)은 A2와 중복 수평 범위를 갖지 않는다). 따라서, P는 S 앞에 있지 않고, 따라서 A1이 A2 앞에 있다. (한편, A2가 열(833)과도 수평으로 중복될 만큼 충분히 넓은 경우, P는 S의 좌표계에서 중복 수평 범위를 갖고 그러한 열들이 둘 이상 존재하는 S의 모든 열들 위에 완전히 존재할 것이다.) 주요 영역(P) 및 보조 영역(S)의 내부 영역들 간의 상호작용들에 기초하는 순서의 결정은 도 8을 참조하여 아래에 더 설명된다.
문맥 순서 관계는 도 10-13을 참조하여 아래에 더 설명된다. 도 10은 (프로세스(900)에 의해 930에서 수행되는 바와 같은) 2개의 좌표계가 어느 영역이 제1 시작 포인트를 갖는지에 대해 일치하는지를 결정하는 일례를 도시한다. 도 10은 2개의 영역(1010, 1020)을 갖는 페이지(1000)를 도시한다. 영역(1010)은 페이지(1000)와 정렬된다. 영역(1010)의 국지 좌표계(1015)는 페이지(1000)의 좌표계(1005)와 정렬된다. 영역(1020)은 페이지(1000)와 정렬되지 않는다. 그의 국지 좌표계(1025)는 페이지(1000)의 좌표계(1005)로부터 회전된 각도에 있다.
영역(1010)(A1)의 국지 좌표계(1015)(x'-y')에서, A1의 시작 포인트 (x1,y1)은 A2의 시작 포인트 (x2,y2)의 위에 있다(즉, y1>y2). 이와 달리, 영역(1020)(A2)의 국지 좌표계(1025)(x"-y")에서, A1의 시작 포인트 (x1,y1)은 A2의 시작 포인트 (x2,y2)의 "아래"에 있다. 즉, A1의 국지 좌표계에서는 A1이 제1 시작 포인트를 갖고, A2의 국지 좌표계에서는 A2가 제1 시작 포인트를 갖는다. 따라서, 2개의 영역의 2개의 좌표계는 어느 영역이 제1 시작 포인트를 갖는지에 대해 일치하지 않는다.
페이지(1000)의 좌표계(1005)(x,y)에서, A1의 시작 포인트 (x1,y1)은 A2의 시작 포인트 (x2,y2) 위에 있다(y1>y2). 따라서, 페이지의 좌표계는 A1의 국지 좌표계와 일치하지만, A2의 국지 좌표계와는 일치하지 않는다. 따라서, 프로세스(900)는 930에서 A1을 보조 영역으로 그리고 A2를 주요 영역으로 지정할 것이다.
도 11-13은 프로세스(900)에 의해 960-985에서 수행되는 바와 같은 주요 영역과 보조 영역 간의 문맥 순서 관계들에서의 순서 결정을 나타낸다. 도 10과 유사하게, 도 11-13의 각각은 2개의 프리미티브 영역을 도시한다. 그리고, 도 10과 유사하게, 프리미티브 영역들 중 하나는 페이지에 대해 소정의 각도로 회전되며, 따라서 2개의 프리미티브 영역은 어느 프리미티브 영역이 제1 시작 포인트를 갖는지에 대해 일치하지 않는 국지 좌표계들을 갖는다. 회전된 영역은 이 예에서 주요 영역(P)으로 지정되는데, 그 이유는 이 영역이 페이지 좌표계와 일치하지 않는 국지 좌표계를 갖기 때문이다. 페이지와 정렬되는 영역은 보조 영역(S)으로 지정된다.
도 11-13에서, 주요 영역(P)의 시작 포인트의 위치는 보조 영역(S)의 영역들을 참조하여 평가된다. P의 시작 포인트가 S의 선행 영역 내에 있는 경우, P<S이다(즉, 주요 영역은 보조 영역 앞에 있다). P의 시작 포인트가 S의 후속 영역 내에 있는 경우, S<P이다(즉, 보조 영역이 주요 영역 앞에 있다). P의 시작 포인트가 S의 내부 영역 내에 있는 경우, 결과는 2개의 내부 영역 사이의 정밀한 상호작용에 의존하는데, P의 내부 영역이 완전히 S의 좌표에서 중복 수평 범위를 갖는 S의 모든 열들 위에 위치하는 경우 그리고 그러한 열이 둘 이상 존재하는 경우, P<S이고, 그렇지 않은 경우에는 S<P이다.
도 11은 보조 영역(S)의 후속 영역 내의 시작 포인트를 갖는 주요 영역(P)을 갖는 페이지에 대한 예시적인 문맥 순서 관계를 나타낸다. 도 11은 레이아웃 영역들(1110, 1120)을 포함하는 예시적인 페이지(1100)를 나타낸다. 레이아웃 영역(1110)은 시작 포인트(1115)를 갖고, 레이아웃 영역(1120)은 시작 포인트(1125)를 갖는다. 페이지(1100)의 좌표계에서는, 레이아웃 영역(1120)의 시작 포인트(1125)가 아니라 레이아웃 영역(1110)의 시작 포인트(1115)가 제1 시작 포인트를 갖는데, 이는 시작 포인트(1115)가 시작 포인트(1125) 위에 있기 때문이다. 레이아웃 영역(1110)의 국지 좌표계에서는 시작 포인트(1115)가 제1 시작 포인트이다. 레이아웃 영역(1120)의 국지 좌표계에서는 시작 포인트(1125)가 제1 시작 포인트이다. 따라서, 페이지(1100)의 좌표계는 2개의 시작 포인트 중 어느 것이 제1 시작 포인트인지에 관하여 레이아웃 영역(1110)의 좌표계와 일치하고, 레이아웃 영역(1120)의 좌표계와는 일치하지 않는다. 따라서, 일부 실시예들은 레이아웃 영역(1120)을 주요 영역(P)으로 그리고 레이아웃 영역(1110)을 보조 레이아웃 영역(S)으로 지정한다. 주요 영역(P)은 보조 영역(S)(즉, 레이아웃 영역(1110))의 후속 영역 내에 그의 시작 포인트(1125)를 갖는 레이아웃 영역(1120)이므로, 주요 영역(P)(즉, 레이아웃 영역(1120))은 문맥 순서 관계에서 보조 영역(S) 뒤에 있을 것이다.
도 12는 보조 영역(S)의 선행 영역 내에 시작 포인트를 갖는 주요 영역(P)을 갖는 페이지에 대한 예시적인 문맥 순서 관계를 나타낸다. 도 12는 레이아웃 영역들(1210, 1220)을 포함하는 예시적인 페이지(1200)를 나타낸다. 레이아웃 영역(1210)은 시작 포인트(1215)를 갖고, 레이아웃 영역(1220)은 시작 포인트(1225)를 갖는다. 페이지(1200)의 좌표계에서는, 레이아웃 영역(1210)의 시작 포인트(1215)가 아니라 레이아웃 영역(1220)의 시작 포인트(1225)가 제1 시작 포인트를 갖는데, 이는 시작 포인트(1225)가 시작 포인트(1215) 위에 있기 때문이다. 레이아웃 영역(1210)의 국지 좌표계에서는 시작 포인트(1225)가 제1 시작 포인트이다. 레이아웃 영역(1220)의 국지 좌표계에서는 시작 포인트(1215)가 제1 시작 포인트이다. 따라서, 페이지(1200)의 좌표계는 2개의 시작 포인트 중 어느 것이 제1 시작 포인트인지에 관하여 레이아웃 영역(1210)의 좌표계와 일치하고, 레이아웃 영역(1220)의 좌표계와는 일치하지 않는다. 따라서, 일부 실시예들은 레이아웃 영역(1220)을 주요 영역(P)으로 그리고 레이아웃 영역(1210)을 보조 레이아웃 영역(S)으로 지정한다. 주요 영역(P)은 보조 영역(S)(즉, 레이아웃 영역(1210))의 선행 영역 내에 그의 시작 포인트(1225)를 갖는 레이아웃 영역(1220)이므로, 주요 영역(P)(즉, 레이아웃 영역(1220))은 문맥 순서 관계에서 보조 영역(S) 앞에 있을 것이다.
도 13은 보조 영역(S)의 내부 영역 내에 시작 포인트를 갖는 주요 영역(P)을 갖는 페이지에 대한 예시적인 문맥 순서 관계를 나타낸다. 도 13은 레이아웃 영역들(1310, 1320)을 포함하는 예시적인 페이지(1300)를 나타낸다. 레이아웃 영역(1310)은 시작 포인트(1315)를 갖고, 레이아웃 영역(1320)은 시작 포인트(1325)를 갖는다. 레이아웃 영역(1310)은 열들(1331-1334)도 포함한다. 페이지(1300)의 좌표계에서는 레이아웃 영역(1320)의 시작 포인트(1325)가 아니라 레이아웃 영역(1310)의 시작 포인트(1315)가 제1 시작 포인트인데, 이는 시작 포인트(1315)가 시작 포인트(1325) 위에 있기 때문이다. 레이아웃 영역(1310)의 국지 좌표계에서는 시작 포인트(1315)가 제1 시작 포인트이다. 레이아웃 영역(1320)의 국지 좌표계에서는 시작 포인트(1325)가 제1 시작 포인트이다. 따라서, 페이지(1300)의 좌표계는 2개의 시작 포인트 중 어느 것이 제1 시작 포인트인지에 관하여 레이아웃 영역(1310)의 좌표계와 일치하고, 레이아웃 영역(1320)의 좌표계와는 일치하지 않는다. 따라서, 일부 실시예들은 레이아웃 영역(1320)을 주요 영역(P)으로 그리고 레이아웃 영역(1310)을 보조 레이아웃 영역(S)으로 지정한다.
주요 영역(P)은 보조 영역(S)(즉, 레이아웃 영역(1310))의 내부 영역 내에 그의 시작 포인트(1325)를 갖는 레이아웃 영역(1320)이므로, 문맥 순서 관계에 따른 P와 S 사이의 순서는 2개의 내부 영역 간의 상호작용에 기초할 것이다. 일부 실시예들은 P의 내부 영역이 S의 좌표에서 중복 수평 범위를 갖는 S의 모든 열들의 완전히 위에 있는지 그리고 그러한 열이 둘 이상인지에 기초하여 그러한 결정을 행한다. 그러한 경우에 P는 S 앞에 있고, 그렇지 않은 경우에 S가 P 앞에 있다.
도 13에 도시된 예에서, P의 시작 포인트는 S의 내부 영역 내에 있지만, S는 완전히 P 아래에 있는, P와 중복 수평 범위를 갖는 열을 갖지 않는다. (S의 열들(1332-1334)은 P와 중복 수평 범위를 갖지만, 이들 중 어느 것도 S의 좌표계에서 P의 내부 영역의 완전히 아래에 있지 않다.) 따라서, P는 문맥 관계들에 따라 S 앞에 있지 않다.
일부 실시예들에서, 도 9-13을 참조하여 전술한 바와 같은 문맥 순서 관계는 문맥 순서 관계가 통하지 않는 영역들의 세트들을 생성할 수 있고, 따라서 이러한 영역들의 세트들을 순서화하는 데 사용될 수 없으므로, 페이지 상의 모든 영역들을 순서화하기 위해 단독으로는 사용되지 않는다. 그러나, 일부 실시예들은 "이웃" 영역들에 대해 문맥 순서 관계를 사용하는데, 이는 문맥 순서 관계가 영역 내의 판독 흐름이 이웃 영역들의 인식되는 판독 흐름에 영향을 미치는 방식을 평가하기 때문이다. 따라서, 일부 실시예들은 시작 포인트 순서 관계를 (또한 초기 이웃 쌍들을 설정하는) 초기 순서화로서 사용하고, 이어서 문맥 순서 관계에 의해 지시되는 경우에, 지시되는 전치들이 일관되고 명백한 한, 이웃 쌍들의 일련의 전치들에 의해 더 양호한 순서화에 집중한다.
도 14는 시작 포인트 순서 관계 및 문맥 순서 관계를 이용하여 페이지 상의 다수의 영역을 순서화하기 위한 예시적인 프로세스(1400)를 개념적으로 나타낸다. 프로세스(1400)는 페이지 내의 레이아웃 영역들 및 그래픽 영역들(형상들, 이미지들 및 형상들과 이미지들의 그룹들)일 수 있는 페이지 내의 프리미티브 영역들의 세트를 수신할 때 시작된다.
프로세스(1400)는 (1410에서) 페이지의 좌표계에서 시작 포인트 순서 관계에 따라 영역들을 오름차순으로 배열하여, 영역들의 시퀀스(A1, A2,..., AN)를 생성한다. QuickSort와 같은 표준 알고리즘을 이용하여, 시작 포인트 순서 관계에 따라 영역들의 시퀀스를 분류할 수 있다.
프로세스는 (1420에서) 문맥 순서 관계에 따라 시퀀스 내의 이웃 영역들의 쌍들을 비교한다. 특히, 영역(AK)이 문맥 순서 관계가 AK<AK -1인 시퀀스 내의 제1 영역인 경우, AK는 시퀀스 AK -1 내의 그의 전임자와 더불어 전치되는 것이 필요할 것이다(즉 AK -1, AK -> AK, AK -1). 일부 실시예들에서, 시퀀스 내에 대응하는 후속 영역(AK +1)을 갖는 AK의 경우, AK와 AK -1 간의 전치는 AK<AK +1인 경우에만 발생할 것이다. 일부 실시예들은 어느 이웃을 전치할지가 명확할 때만 전치들이 발생하는 것을 보증하기 위해 그러한 조건을 추가하는데, 이는 AK<AK -1 및 AK>AK+1인 경우에는 AK와 AK -1 또는 AK와 AK +1 사이에 전치가 발생해야 하는지가 불명확하기 때문이다.
이어서, 프로세스(1400)는 (1425에서) 1420에서 수행된 비교에 따라 이웃하는 영역들의 쌍들 중 임의의 쌍이 전치되는 것이 필요한지를 결정한다. 전치되는 것이 필요한 적어도 하나의 이웃 쌍이 존재하는 경우, 프로세스는 1430으로 진행한다. 어떠한 이웃 영역 쌍도 문맥 순서 관계들에 따라 전치될 필요가 없는 경우, 프로세스는 1440으로 진행한다.
프로세스는 (1430에서) 영역들의 시퀀스 내의 이웃 영역들을 이들 이웃 영역 간의 문맥 순서 관계에 따라 전치한다. 문맥 순서 관계들에 따라 시퀀스 내의 이웃 영역들의 전치를 완료한 후, 프로세스(1400)는 1420으로 복귀하여, 문맥 순서 관계들에 따라 이웃 영역들의 각 쌍을 한 번 더 비교한다. 일부 실시예들에서 이것이 필요한 이유는 동작 1430에서 수행된 전치들이 문맥 순서 관계에 따라 비교되지 않은 새로운 이웃 영역들의 쌍들을 생성하기 때문이다. 따라서, 프로세스(1400)는 영역들의 전체 시퀀스가 문맥 순서 관계들을 충족시킬 때까지 반복하는 반복 프로세스이다. 이러한 반복 프로세스는 항상 완성되는 것으로 입증될 수 있다. 이것은 시작 포인트 순서 관계 및 문맥 순서 관계 양자를 이용하여 페이지 상의 모든 프리미티브 영역들의 선형적 순서를 설정한다.
1440에서, 프로세스(1400)는 결과적인 영역들의 시퀀스를 출력한다. 일부 실시예들은 결과 시퀀스에 따라 영역들 각각에 순서 인덱스를 할당하며, 각각의 순서 인덱스는 시퀀스 내의 위치를 나타낸다. 일부 실시예들은 또한 결과 시퀀스를 이용하여 프리미티브 영역들의 순서화된 리스트를 구성한다. 결과적인 영역들의 시퀀스를 출력한 후, 프로세스(1400)가 종료된다.
도 15는 예시적인 페이지(1500) 내의 프리미티브 영역들로부터 구성된 순서화된 리스트(1550)를 나타낸다. 페이지(1500)는 레이아웃 영역들 A1(1501), A2(1502), A3(1503) 및 A4(1504)를 포함한다. 영역(1501)은 (x1,y1)에 시작 포인트(1511)를 갖고, 영역(1502)은 (x2,y2)에 시작 포인트(1512)를 갖고, 영역(1503)은 (x3,y3)에 시작 포인트(1513)를 갖고, 영역(1504)은 (x4,y4)에 시작 포인트(1514)를 갖는다.
순서화된 리스트(1550)는 페이지(1500)의 영역들(A1-A4)의 순서를 나타내는 어레이에 의해 표시된다. 순서화된 리스트(1550)는 또한 트리 구조, 또는 A1-A4 사이의 순차적 관계를 나타낼 수 있는 임의의 다른 데이터 객체 모델링 구조체에 의해 표시될 수 있다. y1>y2>y3>y4이고, 영역들(A1-A4) 중 어느 것도 시작 포인트 순서 관계가 문맥 순서 관계와 다르게 하는 방식으로 배치 또는 변환되지 않으므로, 프로세스(900)는 오름차순(A1->A2->A3->A4)에 기초하여 영역들(A1-A4)의 순서(1550)를 산출할 것이다.
일부 실시예들에서는, 각각의 프리미티브 영역의 각 프리미티브 요소에 순서 인덱스가 할당된다. 각각의 프리미티브 요소에 할당된 순서 인덱스는 프리미티브 요소가 속하는 프리미티브 영역의 순서에 기초한다. 도 15의 예에서, 프리미티브 영역들(A1-A4) 사이의 순서는 상이한 프리미티브 영역들 사이의 프리미티브 요소들의 순서를 결정한다. 예를 들어, A1 내의 프리미티브 요소들은 A2 내의 프리미티브 요소들 앞의 순서 인덱스들을 부여받고, A2 내의 프리미티브 요소들은 A3 내의 프리미티브 요소들 앞의 순서 인덱스들을 부여받으며, 기타 등등이다.
각각의 프리미티브 영역 내에서, 프리미티브 영역 내의 계층 구조들에 의해 설정된 판독 흐름은 프리미티브 요소들에 할당되는 순서 인덱스들을 결정한다. 예를 들어, 문자 그림문자들 및 인라인 그래픽들을 프리미티브 요소들로서 포함하는 레이아웃 영역은 레이아웃 영역 내의 텍스트 라인들, 단락들 및 열들에 의해 설정된 판독 흐름에 따라 그림문자들 및 인라인 그래픽들의 각각에 할당된 순서 인덱스를 가질 수 있다.
일부 실시예들에서, 프리미티브 영역들은 또한 (예를 들어, 가시적 분할기들에 의해 또는 다중 페이지 헤더/푸터(footer) 템플릿들을 인식함으로써 지시되는 바와 같은) 페이지의 섹션들 또는 포개진 섹션들로 그룹핑된다. 이러한 실시예들 중 일부는 트리 구조를 이용하여 페이지를 모델링한다. 트리 구조는 루트인 페이지로부터 시작하고, 자식들인 섹션들 및/또는 프리미티브 영역들을 갖는다. 섹션들은 또한 자식들인 추가적인 서브섹션들 및/또는 다른 프리미티브 영역을 가질 수 있다. 각각의 섹션은 그의 최초 자손 영역의 인덱스를 부여받는다. 이어서, 일부 실시예들은 트리 노드들에 대한 순서 인덱스들을 이용하여 형제들의 각각의 세트를 오름차순으로 배열함으로써 섹션 그룹핑을 수행하기 위해 영역들의 순서를 재계산한다. 이것은 순서화된 트리를 생성한다. 프리미티브 영역들의 새로운 순서화된 시퀀스를 얻기 위해, 일부 실시예들은 루트에서 시작하고, 프리미티브 영역들만이 남을 때까지 각각의 섹션을 그의 순서화된 자식들의 시퀀스로 반복 대체한다. 페이지 상의 모든 프리미티브 영역들의 순서는 이러한 방식으로 변경될 수 있는데, 이는 2개의 섹션이 오리지널 순서에서 인터리빙된 프리미티브 영역들로 구성될 수 있기 때문이다.
도 16은 2개의 섹션을 갖는 페이지로부터의 순서화된 리스트의 생성을 나타낸다. 예시적인 페이지(1600)는 레이아웃 영역들(A1, A2, A3, A4)을 포함하며, 따라서 시작 순서 관계 및 문맥 순서 관계에 따라 A1<A2<A3<A4이다. 그러나, 페이지(1500)와 달리, 페이지(1600)는 페이지를 섹션 L(좌측) 및 섹션 R(우측)로 분할하는 가시적 분할기(1610)를 포함한다. 섹션 L은 영역들(A1, A3)을 포함하고, 섹션 R은 영역들(A2, A4)을 포함한다.
도 16은 또한 페이지(1600) 및 페이지(1600) 내의 가시적 분할기의 효과들을 모델링하는 데 사용되는 트리 구조(1620)를 도시한다. 트리 구조(1620)는 루트 노드(1621)인 페이지에서 시작하는 페이지(1600)의 모델이다. 루트 노드(1621)는 페이지(1600)의 2개의 섹션을 나타내는 2개의 자식 노드(1622, 1623)를 갖는다. 자식 노드(1622)는 섹션 L을 나타내고, 자식 노드(1623)는 섹션 R을 나타낸다. (섹션 L을 나타내는) 자식 노드(1622)는 섹션 L 내에 있는 2개의 프리미티브 영역(A1, A3)을 나타내는 2개의 손자 노드(1624, 1625)를 갖는다. 또한, (섹션 R을 나타내는) 자식 노드(1623)는 섹션 R 내에 있는 2개의 프리미티브 영역(A2, A4)을 나타내는 2개의 손자 노드(1626, 1627)를 갖는다.
일부 실시예들은 상이한 섹션들 사이의 영역들의 순서를 결정함으로써 각각의 섹션 내의 영역들의 순서를 결정한다. 도 16의 예에서, 섹션 L 및 섹션 R 내의 영역들의 순서는 A1-A4 사이의 순서에 기초하여 결정될 수 있다. A1-A4 사이의 순서는 시작 포인트 순서 관계 또는 문맥 순서 관계에 의해 A1<A2<A3<A4인 것으로 결정될 수 있다. 따라서, 섹션 L 내의 영역들의 순서는 A1<A3이고, 섹션 R 내의 영역들의 순서는 A2<A4이다. 이러한 순서는 노드(1624)에서 노드(1625)로의 그리고 노드(1626)에서 노드(1627)로의 점선 화살표에 의해 표시된다.
페이지 내의 모든 영역들의 순서 및 각각의 섹션 내의 영역들의 순서에 기초하여, 상이한 섹션들 사이의 순서가 결정될 수 있다. 도 16의 예에서, 일부 실시예들은 섹션 L이 섹션 R 앞에 있는 것으로 결정하는데, 이는 섹션 L의 제1 영역(A1)이 섹션 R의 제1 영역(A2) 앞에 있기 때문이다. 이러한 순서는 노드(1622)에서 노드(1623)로 연장하는 점선 화살표에 의해 표시된다.
섹션들 L 및 R 사이의 순서 및 섹션들 L 및 R 내의 영역들의 순서에 기초하여, (어레이로 표현된) 순서화된 리스트(1640)가 생성된다. 새로 생성된 순서화된 리스트(1640)는 A1->A3->A2->A4의 순서를 갖는데, 이는 가시적 분할기(1610)에 의해 부과된 프리미티브 영역들의 그룹핑을 반영한다. 이것은 페이지(1600)와 유사한 페이지(1500)로부터 생성되지만 페이지(1600) 내에 존재하는 가시적 분할기를 갖지 않은 도 15의 순서화된 리스트(1550)(A1->A2->A3->A4)와 다르다. 일부 실시예들에서는, 순서화된 리스트 내의 각각의 영역의 상이한 요소들에 순서 인덱스들이 할당되며, 따라서 최초 영역(A1)의 제1 요소는 최초 인덱스(예를 들어, 0)를 할당받고, 최종 영역(A4)의 최종 요소는 최종 인덱스(예로서, N)를 할당받는다.
II. 콘텐츠 선택
레이아웃 영역들 내에서 이미 문자들 및 인라인 그래픽들이 암시적으로 순서화되었으므로, 프리미티브 영역들의 상기 순서는 페이지 상의 모든 문자들 및 그래픽들에 대한 판독 순서가 된다. 따라서, 페이지 상의 연속 선택들은 선택에서의 최초 및 최종 프리미티브 요소들에 의해 또는 이 판독 순서에서 시작 및 종료 위치들을 나타내는 인덱스들의 쌍에 의해 정의될 수 있다. 일부 실시예들에서, 선택들을 지정하기 위한 공통 사용자 인터페이스들은 페이지 상의 위치들의 쌍에 대한 사용자 지시를 포함한다. 이어서, 판독 순서에서의 대응하는 인덱스들이 위치 좌표들로부터 추정된다.
일부 실시예들에서, 도 17은 시작 선택 포인트 및 종료 선택 포인트를 이용하여 문서 콘텐츠의 연속 선택을 수행하기 위한 프로세스(1700)를 개념적으로 나타낸다. 프로세스(1700)는 문서 페이지(1800) 상에서의 그리고 페이지(1800)의 콘텐츠로부터 생성된 순서화된 리스트(1850) 상에서의 연속 선택을 나타내는 도 18을 참조하여 설명된다. 페이지(1800)는 영역들(1801-1806)(A1-A6), 시작 선택 포인트(1810) 및 종료 선택 포인트(1820)를 포함한다. 시작 선택 포인트(1810) 및 종료 선택 포인트(1820)는 영역들(A3-A5)을 포함하는 연속 선택(1830)을 정의한다. 연속 선택(1830)은 영역(A3)의 요소(1832)에서 시작하고, 영역(A5)의 요소(1834)에서 종료된다. 점선 직사각형은 A3-A5의 일부가 사용자 인터페이스의 일부가 아니라 도 18의 연속 선택(1830)에 포함됨을 개념적으로 나타내는 데에만 사용된다(그러나, 일부 실시예들은 사용자의 선택의 지시를 표시한다).
프로세스(1700)는 (1710에서) 문서 콘텐츠의 순서화된 리스트를 수신한다. 도 18의 예에서, 순서화된 리스트(1850)는 시작 포인트 순서 관계, 문맥 순서 관계 및/또는 다른 타입의 순서화 스킴들을 이용하여 설정될 수 있는 페이지(1800) 내의 영역들의 순서에 기초한다. 순서화된 리스트(1850)는 A1->A2->A3->A4->A5->A6의 시퀀스를 가지며, 이는 6개 영역 사이에 설정된 순서를 반영한다. 영역들의 각각은 프리미티브 요소들(즉, 문자 그림문자들 또는 인라인 그래픽들)을 포함할 수 있고, 시퀀스 내의 영역들 각각의 프리미티브 요소들 각각에는 순서 인덱스가 할당된다.
이어서, 프로세스(1700)는 (1720에서) 시작 선택 포인트 및 종료 선택 포인트를 수신한다. 선택 포인트들은 순서화된 리스트 내의 프리미티브 요소들의 연속 선택을 수행하기 위해 사용자에 의해 지정된 페이지 상의 위치들이다. 일부 실시예들은 사용자 인터페이스로부터 위치 지시들(예로서, 터치 스크린 상의 커서 또는 접촉 포인트)을 해석함으로써 선택 포인트들을 도출한다. 도 18의 예에서, 시작 및 종료 선택 포인트들은 A3 근처에서 시작하고 A5 근처에서 끝나는 연속 선택(1830)을 정의한다.
프로세스(1700)는 (1730에서) 시작 선택 포인트에 "가장 가까운" 프리미티브 영역을 찾는다. 프로세스는 또한 (1740에서) 종료 선택 포인트에 "가장 가까운" 프리미티브 영역을 찾는다. 본 명세서 전반에서, "선택 포인트에 가장 가까운 프리미티브 영역"이라는 용어는 판독 순서에서 선택 포인트에 가장 가까운 프리미티브 영역을 의미한다. 판독 순서에서 선택 포인트에 가장 가까운 프리미티브 영역은 문서의 판독자가 선택 포인트에 의해 선택될 영역으로서 의도한 가능성이 가장 큰 프리미티브 영역이며, 이는 선택 포인트에 거리가 가장 가까운 프리미티브 영역이거나 아닐 수 있다. 도 18의 예에서, 시작 선택 포인트(1810)는 프리미티브 영역(1803)(A3)에 가장 가까우며, 종료 선택 포인트(1820)는 영역(1805)(A5)에 가장 가깝다. 선택 포인트에 가장 가까운 프리미티브 영역을 찾는 예들은 아래의 서브섹션 A에서 더 설명된다.
이어서, 프로세스는 (1750에서) 시작 선택 포인트에 가장 가까운 프리미티브 영역으로부터 시작 선택 인덱스를 결정한다. 프로세스는 또한 (1760에서) 종료 선택 포인트에 가장 가까운 프리미티브 영역으로부터 종료 선택 인덱스를 결정한다. 시작 및 종료 선택 인덱스들의 결정은 아래의 서브섹션 B에서 더 설명된다.
이어서, 프로세스는 (1770에서) 시작 및 종료 선택 인덱스들로부터 시작 및 종료 프리미티브 요소들을 결정한다. 일부 실시예들에서, 시작 프리미티브 요소는 순서화된 리스트에서 시작 선택 인덱스를 할당받은 프리미티브 요소이고, 종료 프리미티브 요소는 순서화된 리스트에서 종료 선택 인덱스를 할당받은 프리미티브 요소이다. 종료 프리미티브 요소가 판독 순서에서 실제로 시작 프리미티브 요소 앞에 있는 경우, 일부 실시예들은 "시작" 및 "종료"의 지정을 스왑핑하며, 따라서 시작 선택 포인트 및 시작 프리미티브 요소는 종료 선택 포인트 및 종료 프리미티브 요소가 되고, 그 반대도 성립한다.
프로세스는 (1780에서) 시작 선택 포인트와 시작 프리미티브 요소 사이의 관계에 기초하여 시작 선택 인덱스를 정밀화한다. 일부 실시예들은 시작 선택 포인트가 시작 프리미티브 요소의 중간 포인트 뒤에 있는 경우에 연속 선택으로부터 시작 프리미티브 요소를 배제함으로써 시작 선택 인덱스를 정밀화한다. 프로세스는 (1790에서) 종료 선택 포인트와 종료 프리미티브 요소 간의 관계에 기초하여 종료 선택 인덱스를 정밀화한다. 일부 실시예들은 종료 선택 포인트가 시작 프리미티브 요소의 중간 포인트 앞에 있는 경우에 연속 선택으로부터 종료 프리미티브 요소를 배제함으로써 종료 선택 인덱스를 정밀화한다. 시작 및 종료 선택 인덱스들의 정밀화(즉, 시작 프리미티브 요소 및 종료 프리미티브 요소를 포함할지의 결정)는 아래의 서브섹션 C에서 더 설명된다. 프로세스(1700)는 선택 포인트들에 가장 가까운 프리미티브 영역들로부터 시작 및 종료 선택 인덱스들을 결정한 후에 종료된다.
도 18의 예에서, 시작 선택 포인트(1810) 및 종료 선택 포인트(1820)는 연속 선택의 시작 및 종료 위치들을 지시하기 위한 시작 선택 인덱스(1815) 및 종료 선택 인덱스(1825)로 변환된다. 시작 선택 인덱스(1815)는 시작 선택 포인트(1810)에 가장 가까운 프리미티브 영역인 프리미티브 영역(A3)과 관련된 인덱스에 기초한다. 또한, 종료 선택 인덱스(1825)는 종료 선택 포인트(1820)에 가장 가까운 프리미티브 영역인 프리미티브 영역(A5)과 관련된 인덱스에 기초한다. 일부 실시예들에서, 시작 인덱스(1815) 및 종료 인덱스(1825)는 프리미티브 영역들(A3, A5) 내의 개별 요소들의 인덱스들에 기초하며, 따라서 시작 인덱스(1815) 및 종료 인덱스(1825)는 연속 선택(1830)에서 어느 영역의 어느 요소가 최초이고, 어느 영역의 어느 요소가 최종인지를 나타낸다. 이 예에서, 시작 및 종료 선택 인덱스들은 A3의 요소(1832) 및 A5의 요소(1834)에 대응하는 인덱스들이다. 요소(1832)는 시작 프리미티브 요소이고, 요소(1834)는 종료 프리미티브 요소이다.
A. 가장 가까운 프리미티브 영역을 결정하기 위한 기준들
문서 콘텐츠의 연속 선택의 시작 및 종료를 결정하기 위하여, 일부 실시예들은 먼저 프리미티브 영역들 중 어느 것이 판독 순서에서 시작 선택 포인트에 가장 가까운지 그리고 프리미티브 영역들 중 어느 것이 판독 순서에서 종료 선택 포인트에 가장 가까운지를 결정한다. 선택 포인트(시작 선택 포인트 또는 종료 선택 포인트)에 가장 가까운 프리미티브 영역의 결정은 선택 포인트가 단지 하나의 프리미티브 영역의 경계들 내에 있는 경우에는 중요하지 않다. 그러나, 선택 포인트가 임의의 프리미티브 영역의 경계들 내에 있지 않을 경우에 또는 선택 포인트가 둘 이상의 콘텐츠 아이템의 경계들 내에 있을 경우에는 중요하다. 따라서, 일부 실시예들은 정상적인 판독 방향을 고려하여 페이지 상의 주어진 선택 포인트에 가장 가까운 프리미티브 영역을 찾는다. 일부 실시예들에서, "가장 가까운" 프리미티브 영역은 그러한 방향들 중 어느 하나에서 도달된 최초 프리미티브 영역으로서 초기에 결정된다. 일부 실시예들은 현재의 최상의 선택으로서 최초 프리미티브 영역에서 시작하고, 시퀀스에서 나머지 프리미티브 영역들을 검색하여, 더 좋은 것이 발견될 때마다 현재의 최상의 선택을 교체한다. 아래의 도 20-24는 가장 가까운 프리미티브 영역을 결정하기 위해 하나의 프리미티브 영역과 다른 프리미티브 영역을 비교하기 위한 여러 기준을 나타낸다. 도 20-24의 설명에서 사용되는 여러 용어가 먼저 도 19를 참조하여 아래에 설명된다. 도 19는 여러 개의 예시적인 선택 포인트 및 프리미티브 영역을 나타낸다. 도시된 바와 같이, 선택 포인트(1915)는 프리미티브 영역(1910) 근처에 있고, 선택 포인트(1925)는 프리미티브 영역(1920) 근처에 있고, 선택 포인트(1935)는 프리미티브 영역(1930) 내에 있다. 프리미티브 영역(1930)은 열들(1941-1944)을 포함한다. 열(1944)은 단락(1945)을 포함한다.
일부 실시예들에서, 선택 포인트에서 객체까지의 "x-변위"의 개념은 선택 포인트의 x 좌표와 객체의 경계들 내의 임의 포인트의 x 좌표 사이의 차이의 절대값의 최소로서 정의되며, 여기서 모든 좌표들은 객체의 국지 좌표계에 있다. 도 19에 도시된 예에서, 선택 포인트(1915)는 레이아웃 영역(1910)으로부터 0이 아닌 x 변위를 가지며, x 변위는 레이아웃 영역(1910)의 가장 가까운 에지와 선택 포인트(1915) 사이의 수평 거리이다. 한편, 선택 포인트(1925)는 레이아웃 영역(1920)에 대해 0의 x 변위를 갖는데, 이는 선택 포인트(1925)가 레이아웃 영역(1920)의 수직 아래에 있고, 선택 포인트(1925)의 x 좌표와 레이아웃 영역(1920)의 경계들 내의 임의 포인트의 x 좌표 사이의 차이의 절대값의 최소가 0이기 때문이다.
유사하게, 일부 실시예들은 선택 포인트에서 객체까지의 y 변위를 선택 포인트의 y 좌표와 객체의 경계들 내의 임의 포인트의 y 좌표 사이의 차이의 절대값의 최소로서 정의한다. 도 19에 도시된 예에서, 선택 포인트(1925)는 레이아웃 영역(1920)으로부터 0이 아닌 y 변위를 가지며, y 변위는 레이아웃 영역(1920)의 가장 가까운 에지와 선택 포인트(1925) 사이의 수직 거리이다. 한편, 선택 포인트(1915)는 레이아웃 영역(1910)에 대해 0의 y 변위를 갖는데, 이는 선택 포인트(1915)가 레이아웃 영역(1910)의 좌측과 수평이고, 선택 포인트(1915)의 y 좌표와 레이아웃 영역(1910)의 경계들 내의 임의 포인트의 y 좌표 사이의 차이의 절대값의 최소가 0이기 때문이다. 도 19는 또한 프리미티브 영역(1930)의 경계들 내에 있는 선택 포인트(1935)를 도시한다. 이러한 예들에서, 영역에 대한 그의 x 변위 및 영역에 대한 그의 y 변위는 0이다.
일부 실시예들은 또한 레이아웃 영역 내의 선택된 열을 0의 y 변위를 갖는 단락이 존재하는, 최소 x 변위를 갖는 열로서 정의한다. 즉, 일부 실시예들은 선택 포인트를 통과하는 수평 라인(즉, 레이아웃 영역의 x축과 평행한 라인)을 이용하여, 이 라인이 단락의 콘텐츠와 교차하는 가장 가까운 열을 찾는다. 그러한 교차가 존재하지 않는 경우, 선택된 열은 존재하지 않는다. 그러한 교차가 존재하는 경우, 교차 단락은 선택된 단락으로 지칭된다. 도 19에 도시된 예에서, 선택 포인트(1935)를 통해 그려진 수평 라인은 열들(1941, 1942, 1944)과 교차할 것이다. 특히, 이 수평 라인은 단락(1945)에서 열(1944)과 교차할 것이다. 열(1943)은 0의 y 변위를 갖는 단락(1945)을 포함하는, 최소 x 변위를 갖는 열이므로, 열(1945)은 선택된 열(강조된 열)이고, 단락(1945)은 선택된 단락(강조된 단락)이다. 일부 실시예들은 수평 라인을 그래픽으로 도시하는 것이 아니라, 선택된 열을 결정하기 위해 선택 포인트를 통과하는 가상 수평 라인을 따라 검색한다.
일부 실시예들은 선택 포인트에서 객체까지의 x-리치(x-reach)를 선택 포인트의 x 좌표와 객체의 경계들 내의 임의 포인트의 x 좌표 사이의 차이의 절대값의 최대로서 더 정의한다. 도 19에 도시된 예에서, 레이아웃 영역(1920)의 우측 에지는 선택 포인트(1925)의 x 좌표와 레이아웃 영역(1920)의 경계들 내의 임의 포인트의 x 좌표 사이의 차이의 절대값의 최대를 갖는다. 따라서, 선택 포인트(1925)와 레이아웃 영역(1920)의 우측 에지 사이의 수평 거리는 선택 포인트(1925)와 레이아웃 영역(1920)의 x 리치이다.
1. y 변위들의 비교
일부 실시예들은 선택 포인트에서 영역까지의 최소 y 변위를 갖는 영역을 선택한다. 양 영역이 동일한 y 변위를 갖는 경우, 영역의 선택은 결정되지 않는다. 도 20은 선택 포인트의 y 변위에 기초하는 선택 포인트에 가장 가까운 프리미티브 영역의 결정을 나타낸다. 도시된 바와 같이, 선택 포인트(2010)는 양 레이아웃 영역들(2012, 2014) 근처에 있고, 선택 포인트(2020)는 양 레이아웃 영역들(2022, 2024) 근처에 있다. 선택 포인트(2010)는 레이아웃 영역(2012)에 대해 0의 y 변위를 갖지만, 레이아웃 영역(2014)에 대해서는 0이 아닌 y 변위를 갖는다. 이 예에서, (강조된) 레이아웃 영역(2012)은 선택 포인트(2010)에 가장 가까운 프리미티브 영역으로서 간주될 것이다. 한편, 선택 포인트(2020)는 레이아웃 영역들(2022, 2024) 양자에 대해 0의 y 변위를 갖는다. 이 예에서, 일부 실시예들은 양 프리미티브 영역들에 대한 y 변위들이 동일할 때 y 변위를 이용하여 2개의 프리미티브 영역을 비교하는 것을 보류할 것이다.
2. 그래픽 영역 내의 레이아웃 영역
레이아웃 영역과 그래픽 영역을 비교할 때, 선택 포인트가 레이아웃 영역의 내부 영역 내에 있고, 이 영역이 그래픽 영역의 경계들 내에 완전히 포함된 경우, 일부 실시예들은 레이아웃 영역을 가장 가까운 프리미티브 영역으로서 선택한다. 그렇지 않은 경우, 선택은 결정되지 않는다. (인쇄물의 전자 스캔들로부터 생성된 OCR 파일들에 일반적이듯이, 이러한 기준은 그래픽들이 레이아웃 영역에 대한 경계 또는 배경으로서 또는 레이아웃 영역 내의 텍스트의 덧씌운 이미지로서 텍스트를 시각적으로 꾸미는 데 사용되는 일반 예들을 인식한다.) 도 21은 레이아웃 영역이 그래픽 영역의 경계들 내에 포함될 때의 레이아웃 영역의 가장 가까운 프리미티브 영역으로서의 선택을 나타낸다.
도 21은 선택 포인트들(2110, 2120)을 나타낸다. 선택 포인트(2110)는 레이아웃 영역(2112) 및 그래픽 영역(2114) 양자 내에 있다. 선택 포인트(2120)는 레이아웃 영역(2122) 및 그래픽 영역(2124) 양자 내에 있다. 선택 포인트(2110)가 레이아웃 영역(2112) 내에 있고, 레이아웃 영역(2112)이 완전히 그래픽 영역(2114) 내에 있으므로, 일부 실시예들은 (강조된) 레이아웃 영역(2112)을 선택 포인트에 가장 가까운 프리미티브 영역으로 선택한다.
한편, 선택 포인트(2120)는 레이아웃 영역(2122) 내에 있지만, 레이아웃 영역(2122)은 완전히 그래픽 영역(2124) 내에 있지는 않으므로 가장 가까운 프리미티브 영역으로 간주되지 않을 것이다. 일부 실시예들은 이러한 상황에서는 선택 포인트(2120)에 가장 가까운 프리미티브 영역을 결정하기 위해 이러한 기준을 사용하는 것을 보류할 것이다.
3. 선택된 열들이 없는 레이아웃 영역들의 비교
선택된 열이 없는 2개의 레이아웃 영역을 비교할 때, 일부 실시예들은 양 레이아웃 영역들로부터 최소 x 변위를 갖는 열 및 최소 y 변위를 갖는 단락을 결정한다. 일부 실시예들은 각각의 영역의 열의 x 변위가 다른 영역의 x 리치보다 작은 경우에 그의 단락에 대해 최소 y 변위를 갖는 레이아웃 영역을 선택한다. 모든 다른 경우에, 선택은 결정되지 않는다. (즉, 열들이 어느 레이아웃들을 사용할지를 명확히 구별하지 않는 경우, 프로세스는 단락들을 주시할 것이다.) 도 22는 선택된 열을 갖지 않는 2개의 레이아웃 영역의 비교를 나타낸다.
도 22는 선택 포인트들(2210, 2220)을 나타낸다. 선택 포인트(2210)는 레이아웃 영역들(2212, 2214) 근처에 있고, 선택 포인트(2220)는 레이아웃 영역들(2222, 2224) 근처에 있다. 레이아웃 영역들 중 어느 것도 선택된 열을 갖지 않는데, 이는 선택 포인트들(2210, 2220)을 통해 그려진 수평 라인들이 임의의 레이아웃 영역들의 어떠한 열과도 교차하지 않기 때문이다.
선택 포인트(2210)의 경우, 레이아웃 영역(2212) 내의 최소 x 변위를 갖는 열은 열(2216)이고, 열(2216) 내의 최소 y 변위를 갖는 단락은 단락(2218)이다. 레이아웃 영역(2214) 내의 최소 x 변위를 갖는 열은 열(2217)이고, 열(2217) 내의 최소 y 변위를 갖는 단락은 단락(2219)이다. 단락(2219)에 대한 y 변위(y 변위 2)는 단락(2218)에 대한 y 변위(y 변위 1)보다 작으므로, 단락(2219)을 포함하는 레이아웃 영역이 선택 포인트(2210)에 가장 가까운 프리미티브 영역으로 선택될 것이다.
선택 포인트(2220)의 경우, 레이아웃 영역(2222) 내의 최소 x 변위를 갖는 열은 열(2226)이고, 열(2226) 내의 최소 y 변위를 갖는 단락은 단락(2228)이다. 레이아웃 영역(2224) 내의 최소 x 변위를 갖는 열은 열(2227)이고, 열(2227) 내의 최소 y 변위를 갖는 단락은 단락(2229)이다. 선택 포인트(2220)에서 단락(2229)까지의 y 변위가 단락(2228)에 대한 y 변위보다 작지만, 레이아웃 영역(2224)은 선택되지 않는데, 이는 선택 포인트에서 레이아웃 영역(2224)까지의 x 변위가 다른 레이아웃 영역(2222)에 대한 x 리치보다 크기 때문이다. 일부 실시예들은 이러한 상황에서는 선택 포인트(2220)에 가장 가까운 프리미티브 영역을 결정하기 위해 이러한 기준을 사용하는 것을 보류할 것이다.
4. x 변위들의 비교
일부 실시예들은 선택 포인트에서 영역까지의 최소 x 변위를 갖는 프리미티브 영역을 선택한다. 이러한 실시예들 중 일부에서, x 변위 값은 영역의 타입에 기초하여 결정된다. 선택된 열을 갖는 레이아웃 영역들의 경우, 선택 포인트에서 선택된 열까지의 x 변위가 레이아웃 영역의 x 변위로 사용된다. 선택된 열이 없는 레이아웃 영역들의 경우, 선택 포인트에서 영역까지의 x 리치가 x 변위 값으로 사용된다. (그래픽 영역들과 같은) 모든 다른 영역들의 경우, 선택 포인트에서 영역까지의 x 변위가 영역의 x 변위 값으로 사용된다.
도 23은 x 변위 값들의 다양한 결정들에 기초하는 프리미티브 영역들의 비교를 나타낸다. 도 23은 선택 포인트들(2310, 2320, 2330)을 나타낸다. 선택 포인트(2310)는 레이아웃 영역들(2312, 2314) 근처에 있다. 선택 포인트(2320)는 레이아웃 영역들(2322, 2324) 근처에 있다. 선택 포인트(2330)는 레이아웃 영역(2332) 및 그래픽 영역(2334) 근처에 있다.
선택 포인트(2310)의 경우, 레이아웃 영역(2312)은 선택된 열(2316) 및 선택된 단락(2318)을 갖는다. 따라서, 레이아웃 영역(2312)의 x 변위는 선택 포인트(2310)에서 선택된 단락(2318)까지의 x 변위(x 변위 1)이다. 한편, 레이아웃 영역(2314)은 선택된 열을 갖지 않으며, 따라서 레이아웃 영역(2314)의 x 변위 값은 그의 x 리치이다. 레이아웃 영역(2314)의 x 변위 값(그의 x 리치)은 레이아웃 영역(2312)의 x 변위 값보다 크므로, 레이아웃 영역(2312)은 선택 포인트(2310)에 가장 가까운 프리미티브 영역으로 결정된다.
선택 포인트(2320)의 경우, 레이아웃 영역(2322)은 선택된 열(2326) 및 선택된 단락(2328)을 갖는다. 따라서, 레이아웃 영역(2322)의 x 변위는 선택 포인트(2320)에서 선택된 단락(2328)까지의 x 변위(x 변위 1)이다. 한편, 레이아웃 영역(2324)은 선택된 열을 갖지 않으며, 따라서 레이아웃 영역(2324)의 x 변위 값은 그의 x 리치이다. 레이아웃 영역(2324)의 x 변위 값(그의 x 리치)은 레이아웃 영역(2322)의 x 변위 값보다 작으므로, 레이아웃 영역(2324)은 선택 포인트(2320)에 가장 가까운 프리미티브 영역으로 결정된다.
선택 포인트(2330)의 경우, 레이아웃 영역(2332)은 선택된 열(2336) 및 선택된 단락(2338)을 갖는다. 따라서, 레이아웃 영역(2332)의 x 변위 값은 선택 포인트(2330)에서 선택된 단락(2338)까지의 x 변위(x 변위 1)이다. 영역(2334)은 그래픽 영역이다. 선택 포인트(2330)에서 그래픽 영역(2334)까지의 x 변위(x 변위 2)는 여역의 x 변위 값으로 사용된다. 그래픽 영역(2334)의 x 변위 값은 레이아웃 영역(2332)의 x 변위 값보다 작으므로, 그래픽 영역(2334)은 선택 포인트(2330)에 가장 가까운 프리미티브 영역으로 결정된다.
5. 선택된 열들의 x 변위들의 비교
선택된 열들을 갖는 2개의 레이아웃 영역을 비교할 때, 일부 실시예들은 선택 포인트에서 선택된 단락까지의 최소 x 변위를 갖는 영역을 선택한다. 도 24는 어느 레이아웃 영역이 선택 포인트로부터의 최소 x 변위를 갖는 선택된 열을 갖는지를 결정함에 의한 선택된 열들을 갖는 레이아웃 영역들의 비교를 나타낸다.
도 24는 선택 포인트들(2410, 2420)을 도시한다. 선택 포인트(2410)는 레이아웃 영역들(2412, 2414) 근처에 있다. 선택 포인트(2420)는 레이아웃 영역들(2422, 2424) 근처에 있다.
선택 포인트(2410)의 경우, 레이아웃 영역(2412)은 선택된 열(2416) 및 선택된 단락(2418)을 갖는다. 따라서, 레이아웃 영역(2412)의 x 변위 값은 선택 포인트(2410)에서 선택된 단락(2418)까지의 x 변위(x 변위 1)이다. 레이아웃 영역(2414)도 선택된 열(2417) 및 선택된 단락(2419)을 갖는다. 따라서, 레이아웃 영역(2414)의 x 변위 값은 선택 포인트(2410)에서 선택된 단락(2419)까지의 x 변위(x 변위 2)이다. 레이아웃 영역(2414)의 x 변위 값은 레이아웃 영역(2412)의 x 변위 값보다 작으므로, 레이아웃 영역(2414)은 선택 포인트(2410)에 가장 가까운 프리미티브 영역으로 결정된다.
선택 포인트(2420)의 경우, 레이아웃 영역(2422)은 선택된 열(2426) 및 선택된 단락(2428)을 갖는다. 따라서, 레이아웃 영역(2422)의 x 변위 값은 선택 포인트(2420)에서 선택된 단락(2428)까지의 x 변위(x 변위 1)이다. 레이아웃 영역(2424)도 선택된 열(2427) 및 선택된 단락(2429)을 갖는다. 따라서, 레이아웃 영역(2424)의 x 변위 값은 선택 포인트(2420)에서 선택된 단락(2429)까지의 x 변위(x 변위 2)이다. 레이아웃 영역(2424)의 x 변위 값은 레이아웃 영역(2422)의 x 변위 값보다 크므로, 레이아웃 영역(2422)은 선택 포인트(2420)에 가장 가까운 프리미티브 영역으로 결정된다.
일부 실시예들은 기준들의 우선 순위 리스트를 이용함으로써 후보 프리미티브 영역들을 비교한다. 일부 실시예들은 최고 우선 순위 기준을 이용함으로써 비교를 시작한다. 리스트 내의 하나의 기준이 2개의 후보 프리미티브 영역 중 어느 것을 선택할지를 결정하지 못하는 경우, 다음 기준이 적용된다. 일부 실시예들에서, 기준들의 우선 순위 리스트는 다음과 같다.
1. 선택 포인트에서 영역까지의 최소 y 변위를 갖는 영역을 선택한다. 양 영역이 동일한 y 변위를 갖는 경우, 영역의 선택은 결정되지 않는다. 이러한 기준의 적용의 예들은 도 20과 관련하여 위에서 설명되었다.
2. 레이아웃 영역과 그래픽 영역을 비교할 때, 선택 포인트가 레이아웃 영역의 내부 영역 내에 있고, 이 영역이 그래픽 영역의 경계들 내에 완전히 포함된 경우, 레이아웃 영역을 선택한다. 그렇지 않은 경우, 선택은 결정되지 않는다. 이러한 기준의 적용의 예들은 도 21과 관련하여 위에서 설명하였다.
3. 2개의 레이아웃 영역을 비교할 때, 이들 어느 것도 선택된 열을 갖지 않는 경우, 선택 포인트에서 열까지의 최소 x 변위를 갖는 각각의 레이아웃 영역 내의 열을 결정하고, 선택 포인트에서 단락까지의 최소 y 변위를 갖는 그러한 2개의 열 각각 내의 단락을 결정한다. 각각의 영역의 열의 x 변위가 다른 영역의 x 리치보다 작은 경우, 그의 단락에 대한 최소 y 변위를 갖는 레이아웃 영역을 선택한다. 모든 다른 경우에, 선택은 결정되지 않는다. 이러한 기준의 적용의 예들은 도 22와 관련하여 전술하였다.
4. 영역에 적합한 타입의 최소 변위 값을 갖는 영역을 선택한다. 선택된 열을 갖는 레이아웃 영역들의 경우, 선택 포인트에서 선택된 열까지의 x 변위를 이용한다. 선택된 열을 갖지 않은 레이아웃 영역들의 경우, 선택 포인트에서 영역까지의 x 리치를 이용한다. 모든 다른 타입의 영역들의 경우, 선택 포인트에서 그러한 영역들까지의 x 변위를 이용한다. 이러한 기준의 적용의 예들은 도 23과 관련하여 전술하였다.
5. 선택된 열들을 갖는 2개의 레이아웃 영역을 비교할 때, 선택 포인트에서 선택된 단락까지의 최소 x 변위를 영역을 선택한다. 이러한 기준의 적용의 예들은 도 24와 관련하여 전술하였다.
6. 최상위 영역을 선택한다. 일부 실시예들에서, 각각의 영역은 어느 콘텐츠가 어느 다른 콘텐츠 위에 그려질지에 관하여 불명료함이 존재하지 않는 것을 보증하기 위해 고유 "z 순서"를 할당받는다. 이러한 실시예들 중 일부는 z 순서에 의해 지시되는 바와 같은 최상위 영역을 선택함으로써 영역들 간의 임의의 남은 동순위들을 해결한다.
시작 선택 포인트에 "가장 가까운" 프리미티브 영역 및 종료 선택 포인트에 "가장 가까운" 프리미티브 영역을 결정한 후, 일부 실시예들은 양 프리미티브 영역을 검사하여, 선택 포인트들이 수정될 필요가 있는지를 검증한다. 예를 들어, 시작 포인트가 영역(A1) 내에 있고, 종료 포인트가 영역(A2) 내에 있고, 영역(A2)이 완전히 A1의 경계들 내에 있는 경우, 일부 실시예들은 종료 포인트가 A2의 밖으로 그리고 A1의 안으로 이동되는 것이 필요한지를 결정하기 위하여 추가 분석을 수행하는데, 이는 사용자가 영역(A2) 내에 종료 선택 포인트를 갖기를 의도하지 않았을 가능성이 크기 때문이다.
B. 선택 인덱스 결정
일부 실시예들에서, 2개의 선택 포인트에 의해 정의되는 연속 선택은 시작 선택 포인트에 가장 가까운 흐름 내의 요소의 인덱스 상에서 시작하고, 종료 선택 포인트에 가장 가까운 흐름 내의 요소의 인덱스 상에서 종료된다. 시작 선택 포인트 및 종료 선택 포인트에 가장 가까운 프리미티브 영역들이 결정되면, 일부 실시예들은 각각의 가장 가까운 프리미티브 영역들에 대한 시작 선택 포인트 및 종료 선택 포인트의 위치에 기초하여 시작 선택 인덱스 및 종료 선택 인덱스를 결정한다.
그래픽 영역인 프리미티브 영역의 경우, 일부 실시예들은 그래픽 영역의 인덱스를 선택 인덱스로 사용한다. 레이아웃 영역인 프리미티브 영역의 경우, 일부 실시예들은 레이아웃 영역의 선택된 열에 기초하여 선택 인덱스를 결정한다. 레이아웃 영역이 선택된 열을 갖지 않는 경우, 일부 실시예들은 선택 포인트에서 열까지의 최소 x 변위를 갖는 열을 이용하여 선택 인덱스를 결정한다.
이러한 열 내에서(이 열이 선택된 열인지 또는 최소 x 변위를 갖는 열인지에 관계없이), 일부 실시예들은 선택 포인트에서 단락까지의 최소 y 변위를 갖는 단락을 결정한다. 이 y 변위가 0이 아니고, 선택 포인트가 단락 위에 있는 경우, 단락의 최초 인덱스가 선택 인덱스로 사용된다. 이 y 변위가 0이 아니고, 선택 포인트가 단락 아래에 있는 경우, 단락의 최종 인덱스가 선택 인덱스로서 사용된다. 한편, 이 y 변위가 0이고, 선택 포인트가 단락 내에 있는 경우, 일부 실시예들은 선택 포인트에서 텍스트 라인까지의 최소 y 변위를 갖는 단락 내의 텍스트 라인을 결정함으로써 선택 인덱스를 결정한다. 그러한 텍스트 라인 내에서, 선택 포인트로부터의 최소 x 변위를 갖는 문자 또는 인라인 그래픽을 이용하여 선택 인덱스를 결정한다.
일부 실시예들에서, 도 25는 선택 포인트에 가장 가까운 프리미티브 영역에 기초하여 선택 인덱스를 결정하기 위한 프로세스(2500)를 개념적으로 나타낸다. 일부 실시예들에서, 프로세스(2500)는 시작 선택 인덱스 및 종료 선택 인덱스를 결정하기 위한 도 17의 동작들(1750 및/또는 1760) 동안에 수행된다. 도 25는 도 26에 도시된 예들을 참조하여 설명된다. 도 26은 선택 포인트의 위치와 선택 인덱스의 결정 사이의 관계를 나타낸다. 도시된 바와 같이, 도 26은 레이아웃 영역들(2610, 2620)을 포함한다. 도 26은 또한 레이아웃 영역들(2610, 2620) 각각 내에서 선택들을 수행하기 위한 선택 포인트들(2611, 2621)을 도시한다.
도 25의 프로세스(2500)는 프리미티브 영역이 선택 포인트에 가장 가까운 프리미티브 영역으로 선택된 때 시작된다. 일부 실시예들에서, 선택 포인트에 가장 가까운 프리미티브 영역은 섹션 II-a에서 전술한 기준들을 이용하여 결정된다. 도 26에 도시된 예에서, 레이아웃 영역(2610)은 선택 포인트(2611)에 가장 가까운 프리미티브 영역이고, 레이아웃 영역(2620)은 선택 포인트(2621)에 가장 가까운 프리미티브 영역이다.
프로세스(2500)는 (2510에서) 가장 가까운 프리미티브 영역으로 선택된 프리미티브 영역이 레이아웃 영역인지를 결정한다. 가장 가까운 프리미티브 영역이 다수의 인덱스와 관련된 다수의 요소를 갖는 레이아웃 영역인 경우, 프로세스는 2520으로 진행한다. 도 26의 양 프리미티브 영역(2610, 2620)은 다수의 인덱스를 갖는 다수의 요소를 갖는 레이아웃 영역들이다. 가장 가까운 프리미티브 영역이 하나의 인덱스와 관련된 하나의 요소만을 가자는 논-레이아웃(예를 들어, 그래픽) 영역인 경우, 프로세스는 2515로 진행하여, 논-레이아웃 영역의 인덱스를 선택 인덱스로서 사용하고, 종료된다.
프로세스는 (2520에서) 선택된 열 또는 선택된 열이 없는 경우에는 레이아웃 영역에 대한 최소 x 변위를 갖는 열을 결정한다. 열 결정에 기초하여, 프로세스는 (2530에서) 선택된 열 또는 최소 x 변위를 갖는 열 내에서 최소 y 변위를 갖는 단락을 결정한다. 도 26에 도시된 예들에서, 선택 포인트(2611)는 열(2612)의 단락(2614) 내에 있다. 따라서, 단락(2614)은 선택 포인트(2611)에 대해 최소 y 변위를 갖는 선택된 단락이다. 선택 포인트(2621)의 경우, 단락(2624)은 최소 y 변위를 갖는 단락이다. 따라서, 단락(2624)은 선택 포인트(2621)에 대한 선택된 단락이다.
이어서, 프로세스는 (2540에서) 선택된 단락의 y 변위가 0인지를 결정한다. 선택된 단락의 y 변위가 0이 아닌 경우, 프로세스는 2550으로 진행한다. 선택된 단락의 y 변위가 0인 경우, 프로세스는 2545로 진행하여, 최소 y 변위를 갖는 선택된 단락 내의 텍스트 라인을 결정한다. 도 26에 도시된 예들에서, 선택 포인트(2611)는 그의 선택된 단락(2614) 내에 있으며, 따라서 선택된 단락의 y 변위는 0이다. 한편, 선택 포인트(2621)는 그의 선택된 단락(2624) 아래에 있으며, 따라서 선택된 단락의 y 변위는 0이 아니다.
이어서, 프로세스는 (2570에서) 최소 x 변위를 갖는 텍스트 라인 내의 문자를 식별하고, (2580에서) 문자의 경계들에 대한 선택 포인트의 위치에 기초하여 선택 인덱스를 결정한다. 선택 인덱스를 결정한 후, 프로세스가 종료된다. 도 26에 도시된 예들에서, 선택 포인트(2611)로부터 최소 y 변위를 갖는 텍스트 라인은 텍스트 라인(2616)이다. 선택 포인트(2611)로부터 최소 x 변위를 갖는 텍스트 라인(2616) 내의 문자는 문자(2617)(단어 "upenden" 내의 문자 'u')이다. 선택 인덱스는 문자(2617)의 경계들에 대한 선택 포인트(2611)의 위치에 기초하여 생성될 것이다.
2550에서, 프로세스는 선택 포인트가 선택된 단락 위에 있는지를 결정한다. 선택 포인트가 선택된 단락 위에 있는 경우, 프로세스는 (2555에서) 단락의 최초 인덱스를 선택 인덱스로서 사용한다. 선택 포인트가 선택된 단락 아래에 있는 경우, 프로세스는 (2560에서) 단락의 최종 인덱스를 선택 인덱스로서 사용한다. 선택 인덱스를 결정한 후, 프로세스가 종료된다. 도 26에 도시된 예들에서, 선택 포인트(2621)는 선택된 단락(2624) 아래에 있다. 따라서, 프로세스(2500)는 일부 실시예들에서 문자(2627)(단어 "rogeignesizing" 내의 문자 'g')의 또는 그 뒤의 위치에 대응하는 선택된 단락(2624)의 최종 인덱스를 사용할 것이다.
C. 연속 선택의 정밀화
일부 실시예들에서는 순서화된 리스트 내의 프리미티브 요소들의 연속 선택이 시작 선택 인덱스에 대응하는 시작 프리미티브 요소에서 시작하고 종료 선택 인덱스에 대응하는 종료 프리미티브 요소에서 종료하도록 정의된다. 시작 프리미티브 요소에 대한 시작 선택 포인트의 위치(및 종료 프리미티브 요소에 대한 종료 선택 포인트의 위치)에 따라, 일부 실시예들은 시작 또는 종료 프리미티브 요소를 포함하거나 배제함으로써 연속 선택의 시작 및 종료를 더 정밀화한다. 일부 실시예들에서, 선택의 시작 또는 종료에 프리미티브 요소를 포함할지 또는 배제할지는 일반적으로 선택 포인트가 프리미티브 요소 및 그의 조상들의 경계들에 대해 어느 곳에 있는지에 의존한다.
일부 실시예들에서, 시작 프리미티브 요소의 텍스트 라인 아래에 있거나, 텍스트 라인의 수직 범위 내이지만, 시작 프리미티브 요소의 중심 분할기의 우측에 있는 시작 선택 포인트는 시작 프리미티브 요소가 연속 선택으로부터 배제되게 하는 반면, 텍스트 라인 위에 있거나, 텍스트 라인의 수직 범위 내이지만, 시작 프리미티브 요소의 중심 분할기의 좌측에 있는 시작 선택 포인트는 시작 프리미티브 요소가 연속 선택에 포함되게 한다. 일부 실시예들에서 종료 프리미티브 요소에 대해서는 그 반대인데, 즉 시작 프리미티브 요소의 텍스트 라인 아래에 있거나, 텍스트 라인의 수직 범위 내이지만, 시작 프리미티브 요소의 중심 분할기의 우측에 있는 종료 선택 포인트는 종료 프리미티브 요소가 연속 선택에 포함되게 하는 반면, 텍스트 라인 위에 있거나, 텍스트 라인의 수직 범위 내이지만, 시작 프리미티브 요소의 중심 분할기의 좌측에 있는 종료 선택 포인트는 종료 프리미티브 요소가 연속 선택으로부터 배제되게 한다.
일부 실시예들에서, 도 27은 연속 선택의 종료시에 프리미티브 요소를 포함시킬지 또는 배제할지를 결정하는 예들을 나타낸다. 도 27은 시작 프리미티브 요소(2710)에서 시작하고 종료 프리미티브 요소(2760)에서 종료하는 연속 선택(2705)을 갖는 문서 페이지(2700)를 나타낸다. 시작 프리미티브 요소(2710)는 레이아웃 영역(2701) 내에 있고, 종료 프리미티브 요소는 레이아웃 영역(2702) 내에 있다. 프리미티브 요소(2710)는 텍스트 라인(2715) 내에 있다. 프리미티브 요소(2760)는 텍스트 라인(2765) 내에 있다. 일부 실시예들에서, 프리미티브 요소는 인라인이 아닌 독립 객체일 수 있다. 이러한 예들에서, 텍스트 라인은 프리미티브 요소의 경계들에 의해 정의된다.
이 도면은 시작 프리미티브 요소(2710) 근처의 여러 개의 예시적인 위치(2721-2724)를 나타낸다. 예시적인 위치(2721)는 시작 프리미티브 요소(2710)를 포함하는 텍스트 라인(2715) 위에 있다. 예시적인 위치(2722)는 프리미티브 요소(2710)의 중심 분할기의 좌측에 그리고 텍스트 라인(2715)의 수직 범위 내에 있다. 예시적인 위치(2723)는 중심 분할기의 우측에 그리고 텍스트 라인(2715)의 수직 범위 내에 있다. 예시적인 위치(2724)는 텍스트 라인(2715) 아래에 있다.
일부 실시예들에서, 연속 선택(2705)을 정의하는 시작 선택 포인트가 예시적인 위치(2721 또는 2722)에 있는 경우, 프리미티브 요소(2710)는 연속 선택에 포함될 것이다. 한편, 시작 선택 포인트가 위치(2723 또는 2724)에 있는 경우, 프리미티브 요소(2710)는 연속 선택에 포함되지 않을 것이다. 이어서, 일부 실시예들은 시작 선택 인덱스를 프리미티브 요소(2710) 바로 뒤의 프리미티브 요소에 대응하도록 조정함으로써 연속 선택을 정밀화한다.
도 27은 또한 종료 프리미티브 요소(2760) 근처의 여러 개의 예시적인 위치(2771-2774)를 도시한다. 예시적인 위치(2771)는 종료 프리미티브 요소(2760)를 포함하는 텍스트 라인(2765) 위에 있다. 예시적인 위치(2772)는 프리미티브 요소(2760)의 중심 분할기의 좌측에 그리고 텍스트 라인(2765)의 수직 범위 내에 있다. 예시적인 위치(2773)는 중심 분할기의 우측에 그리고 텍스트 라인(2765)의 수직 범위 내에 있다. 예시적인 위치(2774)는 텍스트 라인(2765) 아래에 있다.
일부 실시예들에서, 연속 선택(2705)을 정의하는 종료 선택 포인트가 예시적인 위치(2773 또는 2774)에 있는 경우, 프리미티브 요소(2760)는 연속 선택에 포함될 것이다. 한편, 시작 선택 포인트가 위치(2771 또는 2772)에 있는 경우, 프리미티브 요소(2760)는 연속 선택에 포함되지 않을 것이다. 게다가, 일부 실시예들은 종료 선택 인덱스를 프리미티브 요소(2760) 바로 뒤의 프리미티브 요소에 대응하도록 조정함으로써 연속 선택을 정밀화한다.
상이한 실시예들에서, 프리미티브 요소의 중심 라인과 다른 라인을 이용하여, 프리미티브 요소를 포함할지 또는 배제할지를 조리 있게 결정할 수 있다. 예를 들어, 일부 실시예들에서는 시작 프리미티브 요소의 좌측 또는 우측을 이용하여, 시작 프리미티브 요소를 포함할지를 결정할 수 있다.
III. 소프트웨어 아키텍처
일부 실시예들에서, 전술한 프로세스들은 컴퓨터 또는 핸드헬드 장치와 같은 특정 기계 상에서 실행되거나 컴퓨터 판독 가능 매체에 저장된 소프트웨어로서 구현된다. 도 28은 일부 실시예들의 문서 편집 애플리케이션(2800)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 문서 편집 애플리케이션은 독립형 애플리케이션이거나, 다른 애플리케이션 내에 통합되며, 다른 실시예들에서 애플리케이션은 운영 체제 내에 구현될 수 있다. 더구나, 일부 실시예들에서, 애플리케이션은 서버 기반 솔루션의 일부로서 제공된다. 이러한 실시예들 중 일부에서, 애플리케이션은 씬 클라이언트(thin client)를 통해 제공된다. 즉, 애플리케이션이 서버 상에서 실행되는 동안, 사용자는 서버로부터 떨어진 개별 기계를 통해 애플리케이션과 상호작용한다. 다른 그러한 실시예들에서, 애플리케이션은 씨크 클라이언트(thick client)를 통해 제공된다. 즉, 애플리케이션이 서버로부터 클라이언트 기계로 배포되어, 클라이언트 기계 상에서 실행된다.
문서 편집 애플리케이션(2800)은 사용자 인터페이스(UI) 모듈(2805), 순서화된 리스트 생성 모듈(2820), 프리미티브 인식 모듈(2810) 및 연속 선택 해석기 모듈(2830)을 포함한다. 문서 편지 애플리케이션은 또한 문서 저장 장치(2855), 순서화된 리스트 저장 장치(2860) 및 선택 인덱스 저장 장치(2865)를 포함한다. 일부 실시예들에서, 저장 장치들(2855, 2860, 2865)은 하나의 물리 저장 장치(2890)에 저장된다. 다른 실시예들에서, 저장 장치들은 개별적인 물리 저장 장치들 내에 있거나, 저장 장치들 중 2개는 하나의 물리 저장 장치 내에 있고, 세 번째 저장 장치는 다른 물리 저장 장치 내에 있다. 예를 들어, 문서 저장 장치(2855), 순서화된 리스트 저장 장치(2860) 및 선택 인덱스 저장 장치(2865)는 종종 상이한 물리 저장 장치들 내에 분리되지 않을 것이다.
도 28은 입력 장치 드라이버(들)(2872), 표시 모듈(2880) 및 네트워크 접속 인터페이스(들)(2874)를 포함하는 운영 체제(2870)를 또한 도시한다. 일부 실시예들에서, 도시된 바와 같이, 문서 편집 애플리케이션이 운영 체제로부터 분리된 애플리케이션인 경우에도, 입력 장치 드라이버들(2872), 표시 모듈(2880) 및 네트워크 접속 인터페이스들(2874)은 운영 체제(2870)의 일부이다.
입력 장치 드라이버들(2872)은 키보드, 마우스, 터치패드, 드로잉 태블릿, 터치스크린 등으로부터의 신호들을 변환하기 위한 드라이버들을 포함할 수 있다. 사용자는 이러한 입력 장치들 중 하나 이상과 상호작용하며, 이들은 신호들을 이들의 대응하는 장치 드라이버로 전송한다. 이어서, 장치 드라이버는 신호들을 사용자 입력 데이터로 변환하며, 이 데이터는 UI 상호작용 모듈(2805)에 제공된다.
일부 실시예들의 문서 편집 애플리케이션(2800)은 동작들 및 기능들의 상이한 세트들을 수행하기 위한 다양한 방법들을 사용자들에게 제공하는 그래픽 사용자 인터페이스를 포함한다. 일부 실시예들에서, 이러한 동작들 및 기능들은 상이한 입력 장치들(예로서, 키보드, 트랙패드, 터치패드, 마우스 등)을 통해 사용자들로부터 수신되는 상이한 명령들에 기초하여 수행된다. 예를 들어, 본원은 그래픽 사용자 인터페이스에서 커서를 이용하여 그래픽 사용자 인터페이스 내의 객체들을 제어(예로서, 선택, 이동)하는 것을 예시한다. 그러나, 일부 실시예들에서, 그래픽 사용자 인터페이스 내의 객체들은 터치 제어와 같은 다른 제어들을 통해서도 제어 또는 조작될 수 있다. 일부 실시예들에서, 터치 제어는 입력 장치의 디스플레이 상의 터치의 존재 및 위치를 검출할 수 있는 입력 장치를 통해 구현된다. 그러한 기능을 가진 장치의 일례는 (예로서, 스마트폰, 태블릿 컴퓨터 등에 통합된 것과 같은) 터치 스크린 장치이다. 터치 제어를 이용하는 일부 실시예들에서, 사용자는 터치 스크린 장치의 디스플레이 상에 표시된 그래픽 사용자 인터페이스와 상호작용함으로써 객체들을 직접 조작한다. 예를 들어, 사용자는 터치 스크린 장치의 디스플레이 상에 특정 객체를 간단히 터치함으로써 그래픽 사용자 인터페이스에서 그 특정 객체를 선택할 수 있다. 따라서, 터치 제어가 이용될 때, 일부 실시예들에서는 그래픽 사용자 인터페이스의 객체의 선택을 가능하게 하기 위한 커서가 제공되지 않을 수도 있다. 그러나, 그래픽 사용자 인터페이스 내에 커서가 제공될 때, 일부 실시예들에서 터치 제어는 커서를 제어하는 데 사용될 수 있다.
표시 모듈(2880)은 디스플레이 장치에 대한 사용자 인터페이스의 출력을 변환한다. 즉, 표시 모듈(2880)은 무엇이 표시되어야 하는지를 설명하는 (예로서, UI 상호작용 모듈(2805)로부터) 신호들을 수신하고, 이러한 신호들을 디스플레이 장치로 전송되는 픽셀 정보로 변환한다. 디스플레이 장치는 LCD, 플라즈마 스크린, CRT 모니터, 터치스크린 등일 수 있다.
네트워크 접속 인터페이스들(2874)은 문서 편집 애플리케이션(2800)이 동작하는 장치가 하나 이상의 네트워크를 통해 다른 장치들(예로서, 처리되어야 하는 문서들을 저장하는, 네트워크 내의 다른 곳에 위치하는 저장 장치)과 통신하는 것을 가능하게 한다. 네트워크들은 GSM 및 UMTS, 802.11 네트워크들과 같은 무선 음성 및 데이터 네트워크들, 이더넷 접속들과 같은 유선 네트워크들 등을 포함할 수 있다.
문서 편집 애플리케이션(2800)의 UI 상호작용 모듈(2805)은 입력 장치 드라이버들로부터 수신된 사용자 입력 데이터를 해석하여, 이를 프리미티브 인식 모듈(2810), 순서화된 리스트 생성 모듈(2820) 및 연속 선택 해석기 모듈(2830)을 포함하는 다양한 모듈들로 전송한다. UI 상호작용 모듈(2805)은 또한 UI의 표시를 관리하고, 이러한 표시 정보를 표시 모듈(2880)로 출력한다. 이러한 UI 표시 정보는 연속 선택 해석기 모듈(2830)로부터의, 순서화된 리스트 생성 모듈(2820)로부터의, 프리미티브 인식 모듈(2810)로부터의, 저장 장치(2890)로부터의 또는 (예로서, 사용자가 애플리케이션(2800)의 다른 모듈들 중 임의 모듈에 영향을 미치지 않는 UI 내의 아이템을 이동시킬 때) 직접적으로 입력 데이터로부터의 정보에 기초할 수 있다.
프리미티브 인식 모듈(2810)은 사용자 인터페이스 모듈(2805)로부터 명령들을 수신하고, 문서 저장 장치(2855)에 저장된 문서 페이지들을 문자들, 단락들, 열들, 레이아웃 영역들 및 그래픽 영역들과 같은 프리미티브들로 처리한다. 일부 실시예들에서, 프리미티브 인식 모듈(2810)은 또한 페이지 내의 시각적 분할기들에 따라 프리미티브들을 섹션들로 그룹핑하는 트리 구조들과 같은 구조들을 생성한다.
순서화된 리스트 생성 모듈(2820)은 사용자 인터페이스 모듈(2805)로부터 명령을 수신하고, 프리미티브 인식 모듈(2810)에 의해 인식된 프리미티브들을 이용하여 순서화된 리스트를 생성한다. 일부 실시예들에서, 순서화된 리스트 생성 모듈(2820)은 도 8-16을 참조하여 전술한 바와 같은 시작 포인트 순서 관계 순서화 및 문맥 관계 순서화를 수행하는 서브모듈들을 포함한다. 순서화된 리스트 생성 모듈(2820)에 의해 생성된 순서화된 리스트는 순서화된 리스트 저장 장치(2860)에 저장된다. 일부 실시예들에서, 순서화된 리스트 생성 모듈(2820)은 또한 리스트 내의 각각의 프리미티브들에 대해 순서 인덱스들을 할당한다.
연속 선택 해석기 모듈(2830)은 사용자 인터페이스 모듈(2805)로부터 명령들을 수신하고, 시작 선택 포인트 및 종료 선택 포인트를 생성한다. 일부 실시예들에서, 시작 선택 포인트 및 종료 선택 포인트는 사용자 인터페이스 모듈(2805)에 의해 제공되는 사용자 선택 좌표들의 쌍에 기초하여 생성된다. 이어서, 연속 선택 해석기 모듈(2830)은 순서화된 리스트 저장 장치(2860)를 검색하여, 시작 및 종료 선택 포인트들에 가장 가까운 순서화된 리스트 내의 프리미티브들을 식별한다. 식별된 프리미티브들에 기초하여, 연속 선택 해석기 모듈(2830)은 사용자 인터페이스 모듈(2805)에 대한 시작 선택 포인트 및 종료 선택 포인트를 생성한다.
특징들 중 다수가 하나의 모듈(예로서, 순서화된 리스트 생성 모듈(2820) 또는 연속 선택 해석기 모듈(2830))에 의해 수행되는 것으로 설명되었지만, 이 분야의 통상의 기술자는 여기에 설명된 기능들이 다수의 모듈로 분산될 수 있다는 것을 인식할 것이다. 유사하게, 다수의 상이한 모듈에 의해 수행되는 것으로 설명된 기능들(예로서, 시작 포인트 순서 관계 비교, 문맥 순서 관계 비교 등)은 일부 실시예들에서는 단일 모듈에 의해 수행될 수 있다.
IV. 전자 시스템
전술한 특징들 및 응용들 중 다수는 (컴퓨터 판독 가능 매체라고도 하는) 컴퓨터 판독 가능 저장 매체 상에 기록된 명령어들의 세트로서 지정되는 소프트웨어 프로세스들로서 구현된다. 이러한 명령어들은 하나 이상의 계산 또는 처리 유닛(들)(예로서, 하나 이상의 프로세서들, 프로세서들의 코어들 또는 다른 처리 유닛들)에 의해 실행될 때 처리 유닛(들)이 명령어들에서 지시되는 액션들을 수행하게 한다. 컴퓨터 판독 가능 미디어의 예들은 CD-ROM, 플래시 드라이브, 랜덤 액세스 메모리(RAM) 칩, 하드 드라이브, 소거 및 프로그래밍 가능한 판독 전용 메모리(EPROM), 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM) 등을 포함하지만 이에 한정되지 않는다. 컴퓨터 판독 가능 미디어는 무선으로 또는 유선 접속들을 통해 전송되는 반송파들 및 전자 신호들을 포함하지 않는다.
본 명세서에서, "소프트웨어"라는 용어는 판독 전용 메모리 내에 상주하는 펌웨어 또는 프로세서에 의한 처리를 위해 메모리 내로 판독될 수 있는, 자기 저장 장치 내에 저장된 애플리케이션들을 포함하는 것을 의도한다. 또한, 일부 실시예들에서, 다수의 소프트웨어 발명은 다른 소프트웨어 발명들이 남는 동안에 더 큰 프로그램의 하위 부분들로서 구현될 수 있다. 일부 실시예들에서, 다수의 소프트웨어 발명은 개별 프로그램들로서 구현될 수도 있다. 마지막으로, 여기에 설명된 소프트웨어 발명을 함께 구현하는 개별 프로그램들의 임의 조합은 본 발명의 범위 내에 있다. 일부 실시예들에서, 소프트웨어 프로그램들은 하나 이상의 전자 시스템들에서 동작하도록 설치될 때 소프트웨어 프로그램들을 실행하고 그들의 동작들을 수행하는 하나 이상의 특정 기계 구현들을 정의한다.
도 29는 본 발명의 일부 실시예들을 구현하는 전자 시스템(2900)을 개념적으로 나타낸다. 전자 시스템(2900)은 컴퓨터(예로서, 데스크탑 컴퓨터, 개인용 컴퓨터, 태블릿 컴퓨터 등), 전화, PDA, 또는 임의의 다른 유형의 전자 장치일 수 있다. 그러한 전자 시스템은 다양한 타입의 컴퓨터 판독 가능 미디어 및 다양한 다른 타입의 컴퓨터 판독 가능 미디어를 위한 인터페이스들을 포함한다. 전자 시스템(2900)은 버스(2905), 처리 유닛(들)(2910), 그래픽 처리 유닛(GPU)(2915), 시스템 메모리(2920), 네트워크(2925), 판독 전용 메모리(2930), 영구 저장 장치(2935), 입력 장치들(2940) 및 출력 장치들(2945)을 포함한다. 버스(2905)는 전자 시스템(2900)의 다양한 내부 장치들을 통신 가능하게 접속하는 모든 시스템, 주변 장치 및 칩셋 버스들을 집합적으로 나타낸다. 예를 들어, 버스(2905)는 처리 유닛(들)(2910)을 판독 전용 메모리(2930), GPU(2915), 시스템 메모리(2920) 및 영구 저장 장치(2935)와 통신 가능하게 접속한다.
이러한 다양한 메모리 유닛들로부터, 처리 유닛(들)(2910)은 실행할 명령어들 및 처리할 데이터를 검색하여 본 발명의 프로세스들을 실행한다. 처리 유닛(들)은 상이한 실시예들에서 단일 프로세서 또는 다중 코어 프로세서일 수 있다. 일부 명령어들은 GPU(2915)로 전송되어 그에 의해 실행된다. GPU(2915)는 다양한 계산들의 부담을 덜어주거나, 처리 유닛(들)(2910)에 의해 제공되는 이미지 처리를 보완할 수 있다. 일부 실시예들에서, 그러한 기능은 CoreImage의 커널 쉐이딩 언어를 이용하여 제공될 수 있다.
판독 전용 메모리(ROM)(2930)는 전자 시스템의 처리 유닛(들)(2910) 및 다른 모듈들이 필요로 하는 정적 데이터 및 명령어들을 저장한다. 한편, 영구 저장 장치(2935)는 판독 및 기입 메모리 장치이다. 이 장치는 전자 시스템(2900)이 오프 상태일 때에도 명령어들 및 데이터를 저장하는 비휘발성 메모리 유닛이다. 본 발명의 일부 실시예들은 (자기 또는 광 디스크 및 그에 대응하는 디스크 드라이브와 같은) 대용량 저장 장치를 영구 저장 장치(2935)로서 사용한다.
다른 실시예들은 (플로피 디스크, 플래시 메모리 장치 등 및 그에 대응하는 디스크 드라이브와 같은) 이동식 저장 장치를 영구 저장 장치로서 사용한다. 영구 저장 장치(2935)와 같이, 시스템 메모리(2920)는 판독 및 기입 메모리 장치이다. 그러나, 저장 장치(2935)와 달리, 시스템 메모리(2920)는 랜덤 액세스 메모리와 같은 휘발성 판독 및 기입 메모리이다. 시스템 메모리(2920)는 프로세서가 실행시에 필요로 하는 명령어들 및 데이터의 일부를 저장한다. 일부 실시예들에서, 본 발명의 프로세스들은 시스템 메모리(2920), 영구 저장 장치(2935) 및/또는 판독 전용 메모리(2930)에 저장된다. 예를 들어, 다양한 메모리 유닛들은 일부 실시예들에 따른 멀티미디어 클립들을 처리하기 위한 명령어들을 포함한다. 이러한 다양한 메모리 유닛들로부터, 처리 유닛(들)(2910)은 실행할 명령어들 및 처리할 데이터를 검색하여 일부 실시예들의 프로세스들을 실행한다.
버스(2905)는 입력 및 출력 장치들(2940, 2945)에도 접속된다. 입력 장치들(2940)은 사용자가 정보를 통신하고 전자 시스템에 대한 명령들을 선택할 수 있게 한다. 입력 장치들(2940)은 영숫자 키보드들 및 포인팅 장치들("커서 제어 장치들"이라고도 한다), 카메라들(예로서, 웹캠들), 음성 명령들을 수신하기 위한 마이크로폰들 또는 유사한 장치들 등을 포함한다. 출력 장치들(2945)은 전자 시스템에 의해 생성된 이미지들을 표시하거나 데이터를 출력한다. 출력 장치들(2945)은 프린터들 및 음극선관(CRT) 또는 액정 디스플레이(LCD)와 같은 디스플레이 장치들은 물론, 스피커들 또는 유사한 오디오 출력 장치들을 포함한다. 일부 실시예들은 입력 및 출력 장치들 양자로서 기능하는 터치스크린과 같은 장치들을 포함한다.
마지막으로, 도 29에 도시된 바와 같이, 버스(2905)는 또한 전자 시스템(2900)을 네트워크 어댑터(도시되지 않음)를 통해 네트워크(2925)에 결합한다. 이러한 방식으로, 컴퓨터는 근거리 네트워크("LAN"), 광역 네트워크("WAN") 또는 인트라넷과 같은 컴퓨터들의 네트워크, 또는 인터넷과 같은 네트워크들의 네트워크의 일부일 수 있다. 전자 시스템(2900)의 임의의 또는 모든 컴포넌트들은 본 발명과 관련하여 사용될 수 있다.
일부 실시예들은 마이크로프로세서들, (컴퓨터 판독 가능 저장 미디어, 기계 판독 가능 미디어 또는 기계 판독 가능 저장 미디어라고도 하는) 기계 판독 가능 또는 컴퓨터 판독 가능 매체 내에 컴퓨터 프로그램 명령어들을 저장하는 저장 장치 및 메모리와 같은 전자 컴포넌트들을 포함한다. 그러한 컴퓨터 판독 가능 미디어의 일부 예들은 RAM, ROM, 판독 전용 컴팩트 디스크(CD-ROM), 기록 가능 컴팩트 디스크(CD-R), 재기입 가능 컴팩트 디스크(CD-RW), 판독 전용 디지털 다기능 디스크(예로서, DVD-ROM, 2층 DVD-ROM), 다양한 기록 가능/재기입 가능 DVD(예로서, DVD-RAM, DVD-RW, DVD+RW 등), 플래시 메모리(예로서, SD 카드, 미니 SD 카드, 마이크로 SD 카드 등), 자기 및/또는 반도체 하드 디스크, 판독 전용 및 기록 가능 블루레이(등록상표) 디스크, 초고밀도 광 디스크, 임의의 다른 광 또는 자기 미디어 및 플로피 디스크를 포함한다. 컴퓨터 판독 가능 미디어는 적어도 하나의 처리 유닛에 의해 실행될 수 있고 다양한 동작들을 수행하기 위한 명령어들의 세트들을 포함하는 컴퓨터 프로그램을 저장할 수 있다. 컴퓨터 프로그램들 또는 컴퓨터 코드의 예들은 컴파일러에 의해 생성되는 것과 같은 기계 코드, 컴퓨터, 전자 컴포넌트, 또는 해석기를 이용하는 마이크로프로세서에 의해 실행되는 상위 레벨 코드를 포함하는 파일들을 포함한다.
위의 설명은 주로 소프트웨어를 실행하는 마이크로프로세서 또는 다중 코어 프로세서들을 참조하지만, 일부 실시예들은 주문형 집적 회로(ASIC) 또는 필드 프로그래머블 게이트 어레이(FPGA)와 같은 하나 이상의 집적 회로에 의해 수행된다. 일부 실시예들에서, 그러한 집적 회로들은 회로 자체에 저장된 명령어들을 실행한다. 게다가, 일부 실시예들은 프로그래밍 가능한 논리 장치들(PLD), ROM 또는 RAM 장치들에 저장된 소프트웨어를 실행한다.
본 명세서 및 본 명세서의 임의의 청구항들에서 사용될 때, "컴퓨터", "서버", "프로세서" 및 "메모리"라는 용어들 모두는 전자 또는 다른 기술의 장치들을 지칭한다. 이러한 용어들은 사람들 또는 사람들의 그룹들을 배제한다. 본 명세서의 목적을 위해, 디스플레이 및 표시라는 용어들은 전자 장치 상에 표시하는 것을 의미한다. 본 명세서 및 본 명세서의 임의의 청구항들에서 사용될 때, "컴퓨터 판독 가능 매체", "컴퓨터 판독 가능 미디어" 및 "기계 판독 가능 매체"라는 용어들은 컴퓨터가 판독할 수 있는 형태로 정보를 저장하는 유형의 물리 객체들로만 제한된다. 이러한 용어들은 임의의 무선 신호들, 유선 다운로드 신호들 및 임의의 다른 일시적 신호들을 배제한다.
본 발명은 다양한 특정 상세들과 관련하여 설명되었지만, 이 분야의 통상의 기술자는 본 발명이 본 발명의 사상으로부터 벗어나지 않고 다른 특정 형태들로 구현될 수 있다는 것을 인식할 것이다. 게다가, (도 9, 14, 17, 25 및 26을 포함하는) 다수의 도면은 프로세스들을 개념적으로 도시한다. 이러한 프로세스들의 특정 동작들은 도시되고 설명된 바로 그 순서로 수행되지 않을 수도 있다. 특정 동작들은 동작들의 하나의 연속 시리즈로 수행되지 않을 수 있으며, 상이한 특정 동작들이 상이한 실시예들에서 수행될 수 있다. 더구나, 프로세스는 여러 서브프로세스를 이용하여 또는 더 큰 매크로 프로세스의 일부로서 구현될 수 있다. 따라서, 이 분야의 통상의 기술자는 본 발명이 전술한 예시적인 상세들로 한정되는 것이 아니라 첨부된 청구항들에 의해 정의되어야 한다는 것을 이해할 것이다.

Claims (20)

  1. 전자 시스템에서, 문서 페이지의 복수의 프리미티브 영역(primitive area)의 판독 순서를 정의하기 위한 방법으로서,
    상기 문서 페이지 내의 상기 프리미티브 영역들의 위치들에 기초하여 제1 분류 기준에 따라 상기 복수의 프리미티브 영역을 프리미티브 영역들의 정렬된 시퀀스로 분류하는 단계;
    상기 정렬된 시퀀스에서 한 쌍의 연속된 프리미티브 영역들을 선택하는 단계 - 상기 한 쌍의 연속된 프리미티브 영역들은 제1 프리미티브 영역 및 제2 프리미티브 영역을 포함함 -;
    주요 영역과 보조 영역을 결정하기 위해, 서로 다른 좌표계 내에서 상기 제1 및 제2 프리미티브 영역의 시작 포인트들을 비교하는 제2 분류 기준에 기초하여, 상기 제1 및 제2 프리미티브 영역 중 하나의 프리미티브 영역을 상기 주요 영역으로 지정하고 다른 하나의 프리미티브 영역을 상기 보조 영역으로 지정하는 단계 - 시작 포인트는 프리미티브 영역의 판독을 시작하는 포인트를 나타냄 - ;
    상기 제2 분류 기준에 따라 상기 보조 영역에 대해 상기 주요 영역의 상기 시작 포인트의 위치를 비교하는 단계;
    상기 보조 영역에 대한 상기 주요 영역의 상기 시작 포인트의 비교가 상기 제2 분류 기준을 충족시키는 경우에 상기 프리미티브 영역들의 정렬된 시퀀스에서 상기 제1 프리미티브 영역과 상기 제2 프리미티브 영역을 전치하는 단계; 및
    상기 프리미티브 영역들의 전치된 시퀀스에 기초하여 상기 프리미티브 영역들의 판독 순서를 정의하기 위한 순서화된 리스트(ordered list)를 생성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제2 분류 기준에 기초하여, 상기 제1 및 제2 프리미티브 영역 중 하나의 프리미티브 영역을 상기 주요 영역으로 지정하고 다른 하나의 프리미티브 영역을 상기 보조 영역으로 지정하는 단계는,
    상기 제1 및 제2 프리미티브 영역들의 시작 포인트들을 식별하는 단계;
    상기 페이지의 좌표계에서 식별된 상기 제1 및 제2 프리미티브 영역들의 시작 포인트들을 비교하는 단계;
    상기 제1 프리미티브 영역과 정렬된 제1 좌표계에서 식별된 상기 제1 및 제2 프리미티브 영역들의 시작 포인트들을 비교하는 단계; 및
    상기 제2 프리미티브 영역과 정렬된 제2 좌표계에서 식별된 상기 제1 및 제2 프리미티브 영역들의 시작 포인트들을 비교하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 제1 분류 기준은, 상기 복수의 프리미티브 영역들의 시작 포인트들의 비교에 더 기초하고, 상기 제2 분류 기준은 상기 2개의 연속하는 프리미티브 영역들 중 하나의 프리미티브 영역의 판독 흐름에 더 기초하는, 방법.
  4. 제1항에 있어서, 상기 주요 영역의 시작 포인트가 상기 보조 영역의 선행 영역 내에 있을 때 상기 주요 영역은 상기 보조 영역 앞에 있는 방법.
  5. 제1항에 있어서, 상기 주요 영역의 시작 포인트가 상기 보조 영역의 후속 영역 내에 있을 때 상기 주요 영역은 상기 보조 영역 뒤에 있는 방법.
  6. 제1항에 있어서,
    (i) 상기 보조 영역의 하나 보다 많은 열이, 상기 보조 영역의 좌표에서 수평 좌표에 대해 상기 주요 영역의 내부 영역과 오버랩되는 수평 범위를 갖고, (ii) 상기 주요 영역의 전체 내부 영역이 상기 보조 영역의 좌표에서 수직 좌표에 대해 상기 보조 영역의 오버랩되는 모든 열 위에 놓여 지는 경우에, 상기 주요 영역은 상기 보조 영역 앞에 있는 방법.
  7. 제1항에 있어서, 상기 전치된 시퀀스에서의 상기 프리미티브 영역의 위치에 따라 상기 프리미티브 영역들 각각에 순서 인덱스를 할당하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서, 상기 프리미티브 영역들을 하나 이상의 섹션으로 그룹핑하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 프리미티브 영역들의 그룹핑 및 상기 전치된 시퀀스 내의 상기 프리미티브 영역의 위치에 따라 상기 프리미티브 영역들 각각에 순서 인덱스를 할당하는 단계를 더 포함하는 방법.
  10. 적어도 하나의 처리 유닛에 의해 실행될 경우 문서 페이지의 복수의 프리미티브 영역의 판독 순서를 정의하는 프로그램을 저장하는 기계 판독 가능 매체로서,
    상기 프로그램은,
    상기 문서 페이지 내의 상기 프리미티브 영역들의 시작 포인트들을 비교하는 제1 분류 기준에 기초하여 상기 복수의 프리미티브 영역을 프리미티브 영역들의 정렬된 시퀀스로 분류하고 - 상기 정렬된 시퀀스는 제1 프리미티브 영역과, 상기 시퀀스에서 상기 제1 프리미티브 영역에 후속하는 제2 프리미티브 영역을 포함함 -;
    상기 제2 프리미티브 영역의 선행 영역과 상기 제2 프리미티브 영역의 후속 영역에 대해 상기 제1 프리미티브 영역의 시작 포인트의 위치를 비교하는 제2 분류 기준에 따라 상기 제1 프리미티브 영역과 상기 제2 프리미티브 영역을 비교하고 - 시작 포인트는 프리미티브 영역의 판독을 시작하는 포인트를 나타냄 - ;
    상기 제1 프리미티브 영역의 시작 포인트가 상기 제2 프리미티브 영역의 후속 영역 내에 있는 경우 상기 정렬된 시퀀스에서 상기 제1 및 제2 프리미티브 영역을 전치하고;
    상기 프리미티브 영역들의 전치된 시퀀스에 기초하여 상기 프리미티브 영역들의 판독 순서를 정의하기 위한 순서화된 리스트를 생성하기 위한 명령어들의 세트를 포함하는, 기계 판독 가능 매체.
  11. 제10항에 있어서,
    상기 프로그램은,
    상기 프리미티브 영역들 각각에 대해 상기 전치된 시퀀스에서의 프리미티브 영역의 위치에 따라 순서 인덱스를 부여하기 위한 명령어들의 세트를 더 포함하는, 기계 판독 가능 매체.
  12. 제10항에 있어서,
    상기 제2 프리미티브 영역의 선행 영역은, 상기 제2 프리미티브 영역의 판독 흐름에서 상기 제2 프리미티브 영역에 선행하는 상기 문서 페이지 내의 영역을 포함하고,
    상기 제2 프리미티브 영역의 후속 영역은, 상기 제2 프리미티브 영역의 판독 흐름에서 상기 제2 프리미티브 영역에 후속하는 상기 문서 페이지 내의 영역을 포함하는, 기계 판독 가능 매체.
  13. 제10항에 있어서,
    상기 프리미티브 영역들의 시작 포인트들은 상기 문서 페이지에 대해 회전된 특정 프리미티브 영역의 좌표계에 기초하는, 기계 판독 가능 매체.
  14. 제10항에 있어서, 상기 시작 포인트들 각각은 수직 좌표 및 수평 좌표를 포함하고, 상기 제1 분류 기준은 상기 시작 포인트들의 수직 좌표들을 비교하는, 기계 판독 가능 매체.
  15. 제14항에 있어서, 상기 제1 분류 기준은, 2개의 프리미티브 영역이 임계치 미만만큼 다른 수직 좌표들을 가질 경우, 상기 시작 포인트들의 수평 좌표들을 비교하는, 기계 판독 가능 매체.
  16. 적어도 하나의 처리 유닛에 의해 실행될 경우 문서 페이지의 복수의 프리미티브 영역의 판독 순서를 정의하는 프로그램을 저장한 기계 판독 가능 매체로서,
    상기 프로그램은,
    상기 문서 페이지 내의 상기 프리미티브 영역들의 위치들에 기초하는 제1 분류 기준에 따라 복수의 프리미티브 영역을 프리미티브 영역들의 정렬된 시퀀스로 분류하고;
    상기 정렬된 시퀀스에서 한 쌍의 연속된 프리미티브 영역들을 선택하고 - 상기 한 쌍의 연속된 프리미티브 영역들은 제1 프리미티브 영역과 제2 프리미티브 영역을 포함함 - ;
    주요 영역과 보조 영역을 결정하기 위해 서로 다른 좌표계에서 상기 제1 프리미티브 영역과 상기 제2 프리미티브 영역의 시작 포인트들을 비교하는 것에 기초하여 상기 제1 및 제2 프리미티브 영역 중 하나의 프리미티브 영역을 상기 주요 영역으로 지정하고 다른 하나의 프리미티브 영역을 상기 보조 영역으로 지정하고 - 시작 포인트는 프리미티브 영역의 판독을 시작하는 포인트를 나타냄 - ;
    제2 분류 기준에 따라 상기 보조 영역에 대해 상기 주요 영역의 상기 시작 포인트의 위치를 비교하고;
    상기 보조 영역에 대한 상기 주요 영역의 상기 시작 포인트의 비교가 상기 제2 분류 기준을 충족시키는 경우에 상기 프리미티브 영역들의 정렬된 시퀀스에서 상기 2개의 연속하는 프리미티브 영역을 전치하고;
    상기 프리미티브 영역들의 상기 전치된 시퀀스에 기초하여 상기 프리미티브 영역들의 판독 순서를 정의하기 위한 순서화된 리스트를 생성하기 위한 명령어들의 세트를 포함하는, 기계 판독 가능 매체.
  17. 제16항에 있어서, 상기 제1 분류 기준은 또한 상기 복수의 프리미티브 영역들의 시작 포인트들의 비교에 기초하는, 기계 판독 가능 매체.
  18. 제16항에 있어서, 상기 제2 분류 기준은 또한 상기 2개의 연속하는 프리미티브 영역 중 하나의 프리미티브 영역의 판독 흐름에 기초하는, 기계 판독 가능 매체.
  19. 제18항에 있어서, 상기 2개의 연속하는 프리미티브 영역 중 하나의 프리미티브 영역은 문자 그림문자들(character glyphs)을 포함하는 레이아웃 영역인, 기계 판독 가능 매체.
  20. 제16항에 있어서, 상기 프리미티브 영역들의 시작 포인트들은 상기 문서 페이지에 대해 회전된 특정 프리미티브 영역의 좌표계에 기초하는, 기계 판독 가능 매체.
KR1020120005849A 2011-01-18 2012-01-18 문서 콘텐츠의 순서화 KR101376440B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201161433952P 2011-01-18 2011-01-18
US201161433951P 2011-01-18 2011-01-18
US61/433,952 2011-01-18
US61/433,951 2011-01-18
US13/109,921 US8543911B2 (en) 2011-01-18 2011-05-17 Ordering document content based on reading flow
US13/109,921 2011-05-17
US13/109,918 2011-05-17
US13/109,918 US8549399B2 (en) 2011-01-18 2011-05-17 Identifying a selection of content in a structured document

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020130091130A Division KR101363808B1 (ko) 2011-01-18 2013-07-31 문서 콘텐츠의 순서화

Publications (2)

Publication Number Publication Date
KR20120083866A KR20120083866A (ko) 2012-07-26
KR101376440B1 true KR101376440B1 (ko) 2014-03-19

Family

ID=46491687

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020120005849A KR101376440B1 (ko) 2011-01-18 2012-01-18 문서 콘텐츠의 순서화
KR1020130091130A KR101363808B1 (ko) 2011-01-18 2013-07-31 문서 콘텐츠의 순서화

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020130091130A KR101363808B1 (ko) 2011-01-18 2013-07-31 문서 콘텐츠의 순서화

Country Status (6)

Country Link
US (2) US8543911B2 (ko)
JP (1) JP5789525B2 (ko)
KR (2) KR101376440B1 (ko)
AU (1) AU2012200144B2 (ko)
TW (1) TWI461934B (ko)
WO (1) WO2012099801A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473467B2 (en) * 2009-01-02 2013-06-25 Apple Inc. Content profiling to dynamically configure content processing
US9251123B2 (en) * 2010-11-29 2016-02-02 Hewlett-Packard Development Company, L.P. Systems and methods for converting a PDF file
US8543911B2 (en) 2011-01-18 2013-09-24 Apple Inc. Ordering document content based on reading flow
US9928225B2 (en) 2012-01-23 2018-03-27 Microsoft Technology Licensing, Llc Formula detection engine
CN103366031A (zh) * 2012-04-09 2013-10-23 鸿富锦精密工业(深圳)有限公司 Cad对象与树形对象整合系统及方法
US9292192B2 (en) * 2012-04-30 2016-03-22 Blackberry Limited Method and apparatus for text selection
US20140258852A1 (en) * 2013-03-11 2014-09-11 Microsoft Corporation Detection and Reconstruction of Right-to-Left Text Direction, Ligatures and Diacritics in a Fixed Format Document
US9330070B2 (en) 2013-03-11 2016-05-03 Microsoft Technology Licensing, Llc Detection and reconstruction of east asian layout features in a fixed format document
CN103472998B (zh) * 2013-09-27 2017-03-15 小米科技有限责任公司 一种选取文字的方法、装置和终端设备
US9377949B2 (en) 2013-09-27 2016-06-28 Xiaomi Inc. Method and terminal device for selecting character
TWI536798B (zh) 2014-08-11 2016-06-01 虹光精密工業股份有限公司 影像分檔方法
CN105653549A (zh) * 2014-11-12 2016-06-08 北大方正集团有限公司 一种提取文档信息的方法及装置
US10353986B2 (en) * 2015-08-02 2019-07-16 Apple Inc. Automatically dividing text into multiple columns
JP6805552B2 (ja) * 2016-05-26 2020-12-23 コニカミノルタ株式会社 情報処理装置及びプログラム
JP6665823B2 (ja) * 2017-03-30 2020-03-13 京セラドキュメントソリューションズ株式会社 画像形成装置
US10339212B2 (en) * 2017-08-14 2019-07-02 Adobe Inc. Detecting the bounds of borderless tables in fixed-format structured documents using machine learning
US10936864B2 (en) * 2018-06-11 2021-03-02 Adobe Inc. Grid layout determination from a document image
US11182542B2 (en) * 2018-10-29 2021-11-23 Microsoft Technology Licensing, Llc Exposing annotations in a document
US11176310B2 (en) * 2019-04-01 2021-11-16 Adobe Inc. Facilitating dynamic document layout by determining reading order using document content stream cues
CN110659640B (zh) * 2019-09-27 2021-11-30 深圳市商汤科技有限公司 文本序列的识别方法及装置、电子设备和存储介质
US11657101B2 (en) * 2020-01-13 2023-05-23 Goldman Sachs & Co. LLC Document information extraction system using sequenced comparators
US10970458B1 (en) 2020-06-25 2021-04-06 Adobe Inc. Logical grouping of exported text blocks
US11531454B2 (en) * 2020-12-10 2022-12-20 Microsoft Technology Licensing, Llc Selecting content in ink documents using a hierarchical data structure

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0779594A2 (en) * 1995-12-14 1997-06-18 Xerox Corporation Automatic method of identifying sentence boundaries in a document image

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4698625A (en) * 1985-05-30 1987-10-06 International Business Machines Corp. Graphic highlight adjacent a pointing cursor
JPH0685128B2 (ja) * 1987-03-12 1994-10-26 フアナツク株式会社 自動プログラミングシステム
JP2855797B2 (ja) 1990-06-15 1999-02-10 富士ゼロックス株式会社 文書処理装置
US5396582A (en) * 1991-02-06 1995-03-07 Hewlett-Packard Company Raster to vector conversion system and method therefor
JP3143499B2 (ja) * 1991-08-21 2001-03-07 キヤノン株式会社 焦点調節装置
JPH0594433A (ja) 1991-10-02 1993-04-16 Fuji Xerox Co Ltd 文書処理装置
US5390259A (en) 1991-11-19 1995-02-14 Xerox Corporation Methods and apparatus for selecting semantically significant images in a document image without decoding image content
US5757358A (en) * 1992-03-31 1998-05-26 The United States Of America As Represented By The Secretary Of The Navy Method and apparatus for enhancing computer-user selection of computer-displayed objects through dynamic selection area and constant visual feedback
US5335290A (en) 1992-04-06 1994-08-02 Ricoh Corporation Segmentation of text, picture and lines of a document image
US5680479A (en) 1992-04-24 1997-10-21 Canon Kabushiki Kaisha Method and apparatus for character recognition
US5523775A (en) 1992-05-26 1996-06-04 Apple Computer, Inc. Method for selecting objects on a computer display
JP2789971B2 (ja) 1992-10-27 1998-08-27 富士ゼロックス株式会社 表認識装置
US5848184A (en) 1993-03-15 1998-12-08 Unisys Corporation Document page analyzer and method
JP3302147B2 (ja) 1993-05-12 2002-07-15 株式会社リコー 文書画像処理方法
NL9301004A (nl) 1993-06-11 1995-01-02 Oce Nederland Bv Inrichting voor het bewerken en reproduceren van digitale beeldinformatie.
US5553217A (en) 1993-09-23 1996-09-03 Ricoh Company, Ltd. Document layout using tiling
JP2511804B2 (ja) * 1993-11-16 1996-07-03 日本アイ・ビー・エム株式会社 多重指示点カ―ソルをもつデ―タ処理装置及び多重指示点カ―ソルを利用するデ―タ処理方法
JP2618832B2 (ja) 1994-06-16 1997-06-11 日本アイ・ビー・エム株式会社 文書の論理構造の解析方法及びシステム
US5537628A (en) 1994-08-29 1996-07-16 Microsoft Corporation Method for handling different code pages in text
US5555556A (en) 1994-09-30 1996-09-10 Xerox Corporation Method and apparatus for document segmentation by background analysis
EP0723247B1 (en) 1995-01-17 1998-07-29 Eastman Kodak Company Document image assessment system and method
US5848186A (en) 1995-08-11 1998-12-08 Canon Kabushiki Kaisha Feature extraction system for identifying text within a table image
JPH0969101A (ja) 1995-08-31 1997-03-11 Hitachi Ltd 構造化文書生成方法および装置
US5841900A (en) 1996-01-11 1998-11-24 Xerox Corporation Method for graph-based table recognition
JP3061765B2 (ja) 1996-05-23 2000-07-10 ゼロックス コーポレイション コンピュータベースの文書処理方法
US5784487A (en) 1996-05-23 1998-07-21 Xerox Corporation System for document layout analysis
US5777616A (en) * 1996-08-05 1998-07-07 International Business Machines Corporation Data processing system and method for invoking a function of a multifunction icon in a graphical user interface
US6728784B1 (en) * 1996-08-21 2004-04-27 Netspeak Corporation Collaborative multimedia architecture for packet-switched data networks
US5956737A (en) 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
US6512848B2 (en) 1996-11-18 2003-01-28 Canon Kabushiki Kaisha Page analysis system
GB9625284D0 (en) 1996-12-04 1997-01-22 Canon Kk A data processing method and apparatus for identifying a classification to which data belongs
US6240430B1 (en) 1996-12-13 2001-05-29 International Business Machines Corporation Method of multiple text selection and manipulation
EP0926629A1 (en) * 1997-01-24 1999-06-30 Sony Corporation Pattern data generator, pattern data generating method and its medium
US6374200B1 (en) * 1997-02-03 2002-04-16 Fujitsu Limited Layout apparatus for laying out objects in space and method thereof
US6049326A (en) * 1997-05-12 2000-04-11 Siemens Information And Communication Networks, Inc. System and method for dual browser modes
US6049325A (en) * 1997-05-27 2000-04-11 Hewlett-Packard Company System and method for efficient hit-testing in a computer-based system
US6175844B1 (en) 1997-05-29 2001-01-16 Adobe Systems Incorporated Ordering groups of text in an image
US6687404B1 (en) 1997-06-20 2004-02-03 Xerox Corporation Automatic training of layout parameters in a 2D image model
US6562077B2 (en) 1997-11-14 2003-05-13 Xerox Corporation Sorting image segments into clusters based on a distance measurement
US6173073B1 (en) 1998-01-05 2001-01-09 Canon Kabushiki Kaisha System for analyzing table images
US6377704B1 (en) 1998-04-30 2002-04-23 Xerox Corporation Method for inset detection in document layout analysis
JP3033956B2 (ja) * 1998-07-23 2000-04-17 インターナショナル・ビジネス・マシーンズ・コーポレイション 図形オブジェクトの表示属性を変更する方法、図形オブジェクトを選択する方法、図形オブジェクト表示制御装置、図形オブジェクトの表示属性を変更するプログラムを格納した記憶媒体及び、図形オブジェクトの選択を制御するプログラムを格納した記憶媒体
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
JP4235286B2 (ja) 1998-09-11 2009-03-11 キヤノン株式会社 表認識方法及び装置
US6263122B1 (en) * 1998-09-23 2001-07-17 Hewlett Packard Company System and method for manipulating regions in a scanned image
JP2000285140A (ja) 1998-12-24 2000-10-13 Ricoh Co Ltd 文書処理装置、文書分類装置、文書処理方法、文書分類方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6345279B1 (en) * 1999-04-23 2002-02-05 International Business Machines Corporation Methods and apparatus for adapting multimedia content for client devices
US6504544B1 (en) 1999-07-30 2003-01-07 Curl Corporation Processing layout of text graphical objects
US6542635B1 (en) 1999-09-08 2003-04-01 Lucent Technologies Inc. Method for document comparison and classification using document image layout
US6826727B1 (en) * 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
US6664990B1 (en) * 1999-12-07 2003-12-16 International Business Machines Corporation Computer display pointer with alternate hot spots
US20010032218A1 (en) 2000-01-31 2001-10-18 Huang Evan S. Method and apparatus for utilizing document type definition to generate structured documents
US6757870B1 (en) 2000-03-22 2004-06-29 Hewlett-Packard Development Company, L.P. Automatic table detection method and system
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US6938204B1 (en) 2000-08-31 2005-08-30 International Business Machines Corporation Array-based extensible document storage format
US7260777B2 (en) * 2001-08-17 2007-08-21 Desknet Inc. Apparatus, method and system for transforming data
US8230323B2 (en) 2000-12-06 2012-07-24 Sra International, Inc. Content distribution system and method
US6751628B2 (en) 2001-01-11 2004-06-15 Dolphin Search Process and system for sparse vector and matrix representation of document indexing and retrieval
US7080318B2 (en) 2001-02-28 2006-07-18 Koninklijke Philips Electronics N.V. Schema, syntactic analysis method and method of generating a bit stream based on a schema
US7565605B2 (en) 2001-05-08 2009-07-21 Nokia, Inc. Reorganizing content of an electronic document
US20030014442A1 (en) 2001-07-16 2003-01-16 Shiigi Clyde K. Web site application development method using object model for managing web-based content
US6801673B2 (en) 2001-10-09 2004-10-05 Hewlett-Packard Development Company, L.P. Section extraction tool for PDF documents
AUPR962001A0 (en) * 2001-12-19 2002-01-24 Redbank Manor Pty Ltd Document display system and method
WO2003091903A1 (en) 2002-04-24 2003-11-06 Sarvega, Inc. System and method for processing of xml documents represented as an event stream
US6904170B2 (en) 2002-05-17 2005-06-07 Hewlett-Packard Development Company, L.P. Method and system for document segmentation
US7142728B2 (en) 2002-05-17 2006-11-28 Science Applications International Corporation Method and system for extracting information from a document
MXPA04011507A (es) 2002-05-20 2005-09-30 Tata Infotech Ltd Identificador de estructura de documento.
US20040003349A1 (en) 2002-06-28 2004-01-01 Microsoft Corporation Content segments
US7027071B2 (en) 2002-07-02 2006-04-11 Hewlett-Packard Development Company, L.P. Selecting elements from an electronic document
US7254270B2 (en) 2002-07-09 2007-08-07 Hewlett-Packard Development Company, L.P. System and method for bounding and classifying regions within a graphical image
US20060104511A1 (en) 2002-08-20 2006-05-18 Guo Jinhong K Method, system and apparatus for generating structured document files
JP3755499B2 (ja) * 2002-09-06 2006-03-15 ソニー株式会社 Guiアプリケーション開発支援装置、gui表示装置、および方法、並びにコンピュータ・プログラム
CA2504423C (en) 2002-10-31 2011-10-18 Arizan Corporation Methods and apparatus for summarizing document content for mobile communication devices
US7272258B2 (en) 2003-01-29 2007-09-18 Ricoh Co., Ltd. Reformatting documents using document analysis information
US7313754B2 (en) 2003-03-14 2007-12-25 Texterity, Inc. Method and expert system for deducing document structure in document conversion
US7305612B2 (en) 2003-03-31 2007-12-04 Siemens Corporate Research, Inc. Systems and methods for automatic form segmentation for raster-based passive electronic documents
US7890852B2 (en) 2003-06-26 2011-02-15 International Business Machines Corporation Rich text handling for a web application
US7171618B2 (en) 2003-07-30 2007-01-30 Xerox Corporation Multi-versioned documents and method for creation and use thereof
GB0320278D0 (en) 2003-08-29 2003-10-01 Hewlett Packard Development Co Constrained document layout
JP2005108230A (ja) 2003-09-25 2005-04-21 Ricoh Co Ltd オーディオ/ビデオコンテンツ認識・処理機能内蔵印刷システム
US7424672B2 (en) 2003-10-03 2008-09-09 Hewlett-Packard Development Company, L.P. System and method of specifying image document layout definition
JP2005149269A (ja) 2003-11-18 2005-06-09 Hitachi Systems & Services Ltd 構造化文書の処理システム
JP4012140B2 (ja) 2003-11-20 2007-11-21 キヤノン株式会社 画像処理装置、情報処理装置及びそれらの制御方法、プログラム
US7581171B2 (en) 2004-01-06 2009-08-25 Microsoft Corporation Positionally encoded document image analysis and labeling
US7386789B2 (en) 2004-02-27 2008-06-10 Hewlett-Packard Development Company, L.P. Method for determining logical components of a document
US7441207B2 (en) 2004-03-18 2008-10-21 Microsoft Corporation Method and system for improved viewing and navigation of content
US7284192B2 (en) 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents
US20060074980A1 (en) 2004-09-29 2006-04-06 Sarkar Pte. Ltd. System for semantically disambiguating text information
JP2006154498A (ja) * 2004-11-30 2006-06-15 Matsushita Electric Ind Co Ltd フォーマット変換装置、フォーマット変換方法、並びにフォーマット変換装置を用いた画像表示装置及びその画像表示方法
US7693848B2 (en) 2005-01-10 2010-04-06 Xerox Corporation Method and apparatus for structuring documents based on layout, content and collection
US8245131B2 (en) 2005-02-10 2012-08-14 Hewlett-Packard Development Company, L.P. Constraining layout variations for accommodating variable content in electronic documents
US7543229B2 (en) 2005-04-14 2009-06-02 Hewlett-Packard Development Company, L.P. Analysis of graphic design material
US7386558B2 (en) 2005-04-22 2008-06-10 Microsoft Corporation Methods and systems for filtering an Extensible Application Markup Language (XAML) file to facilitate indexing of the logical content contained therein
US8302002B2 (en) 2005-04-27 2012-10-30 Xerox Corporation Structuring document based on table of contents
US7392473B2 (en) 2005-05-26 2008-06-24 Xerox Corporation Method and apparatus for determining logical document structure
US7697757B2 (en) 2005-06-15 2010-04-13 Hewlett-Packard Development Company, L.P. Computer assisted document modification
JP2006350867A (ja) 2005-06-17 2006-12-28 Ricoh Co Ltd 文書処理装置、文書処理方法、プログラム及び情報記録媒体
US7555711B2 (en) 2005-06-24 2009-06-30 Hewlett-Packard Development Company, L.P. Generating a text layout boundary from a text block in an electronic document
DE602005002473T2 (de) 2005-07-01 2008-01-10 Pdflib Gmbh Verfahren zum Erkennen von semantischen Einheiten in einem elektronischen Dokument
GB2428114A (en) 2005-07-08 2007-01-17 William Alan Hollingsworth Data Format Conversion System
US7559033B2 (en) 2005-07-21 2009-07-07 International Business Machines Corporation Method and system for improving selection capability for user interface
US7613996B2 (en) 2005-08-15 2009-11-03 Microsoft Corporation Enabling selection of an inferred schema part
US7877685B2 (en) 2005-12-29 2011-01-25 Sap Ag Persistent adjustable text selector
US7676741B2 (en) 2006-01-31 2010-03-09 Microsoft Corporation Structural context for fixed layout markup documents
US7623710B2 (en) 2006-02-14 2009-11-24 Microsoft Corporation Document content and structure conversion
US7461349B1 (en) 2006-02-28 2008-12-02 Adobe Systems Incorporated Methods and apparatus for applying functions to content
US7603351B2 (en) 2006-04-19 2009-10-13 Apple Inc. Semantic reconstruction
US7756333B2 (en) 2006-04-26 2010-07-13 Microsoft Corporation Document layout verification
US20070294646A1 (en) 2006-06-14 2007-12-20 Sybase, Inc. System and Method for Delivering Mobile RSS Content
US8010646B2 (en) * 2006-06-27 2011-08-30 Palo Alto Research Center Incorporated Method, apparatus, and program product for efficiently defining relationships in a comprehension state of a collection of information
WO2008044321A1 (fr) * 2006-10-13 2008-04-17 Core Appli Incorporated Logiciel et système informatique de support d'opération
US7911481B1 (en) * 2006-12-14 2011-03-22 Disney Enterprises, Inc. Method and apparatus of graphical object selection
US8276060B2 (en) * 2007-02-16 2012-09-25 Palo Alto Research Center Incorporated System and method for annotating documents using a viewer
US7778953B2 (en) 2007-02-19 2010-08-17 Kabushiki Kaisha Toshiba Document management apparatus and document management method
US20080235564A1 (en) 2007-03-21 2008-09-25 Ricoh Co., Ltd. Methods for converting electronic content descriptions
US8504553B2 (en) 2007-04-19 2013-08-06 Barnesandnoble.Com Llc Unstructured and semistructured document processing and searching
TW200846942A (en) * 2007-05-21 2008-12-01 Univ Nat Taiwan Science Tech Clustering TRIZ analysis model
US20080307308A1 (en) * 2007-06-08 2008-12-11 Apple Inc. Creating Web Clips
JP4590433B2 (ja) 2007-06-29 2010-12-01 キヤノン株式会社 画像処理装置、画像処理方法、コンピュータプログラム
WO2009026508A1 (en) 2007-08-22 2009-02-26 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for providing content-aware scrolling
US20090091564A1 (en) * 2007-10-03 2009-04-09 Raju Thevan System and method for rendering electronic documents having overlapping primitives
US20090249224A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Simultaneous collaborative review of a document
US20100145720A1 (en) 2008-12-05 2010-06-10 Bruce Reiner Method of extracting real-time structured data and performing data analysis and decision support in medical reporting
US8473467B2 (en) 2009-01-02 2013-06-25 Apple Inc. Content profiling to dynamically configure content processing
JP2010160543A (ja) * 2009-01-06 2010-07-22 Renesas Electronics Corp 半導体装置のレイアウトパターンのレイアウト検証装置、レイアウト検証プログラム及びレイアウト検証方法
US9384181B2 (en) * 2010-12-20 2016-07-05 Microsoft Technology Licensing, Llc Generating customized data bound visualizations
US8543911B2 (en) 2011-01-18 2013-09-24 Apple Inc. Ordering document content based on reading flow
EP2477122B1 (en) 2011-01-18 2018-10-24 Apple Inc. Ordering document content

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0779594A2 (en) * 1995-12-14 1997-06-18 Xerox Corporation Automatic method of identifying sentence boundaries in a document image

Also Published As

Publication number Publication date
KR20130092536A (ko) 2013-08-20
AU2012200144B2 (en) 2013-09-12
US8549399B2 (en) 2013-10-01
TW201250493A (en) 2012-12-16
TWI461934B (zh) 2014-11-21
JP5789525B2 (ja) 2015-10-07
KR101363808B1 (ko) 2014-02-17
JP2012155714A (ja) 2012-08-16
AU2012200144A1 (en) 2012-08-02
WO2012099801A4 (en) 2012-09-20
US20120185766A1 (en) 2012-07-19
WO2012099801A2 (en) 2012-07-26
WO2012099801A3 (en) 2012-08-23
KR20120083866A (ko) 2012-07-26
US20120185765A1 (en) 2012-07-19
US8543911B2 (en) 2013-09-24

Similar Documents

Publication Publication Date Title
KR101376440B1 (ko) 문서 콘텐츠의 순서화
KR101324799B1 (ko) 문서 재구조화를 위한 방법 및 시스템
JP5663866B2 (ja) 情報処理装置及び情報処理プログラム
KR101321309B1 (ko) 문서 내의 목록들의 재구성
US9928225B2 (en) Formula detection engine
JP2010541097A (ja) 相対位置に基く制御によるページ上のグラフィックスオブジェクトの配置
WO2014005609A1 (en) Paragraph alignment detection and region-based section reconstruction
EP2477122B1 (en) Ordering document content
KR101401427B1 (ko) 전자책 데이터 음성 합성 장치 및 그 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 7