KR101324799B1 - 문서 재구조화를 위한 방법 및 시스템 - Google Patents

문서 재구조화를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101324799B1
KR101324799B1 KR1020117018126A KR20117018126A KR101324799B1 KR 101324799 B1 KR101324799 B1 KR 101324799B1 KR 1020117018126 A KR1020117018126 A KR 1020117018126A KR 20117018126 A KR20117018126 A KR 20117018126A KR 101324799 B1 KR101324799 B1 KR 101324799B1
Authority
KR
South Korea
Prior art keywords
delete delete
document
words
page
paragraphs
Prior art date
Application number
KR1020117018126A
Other languages
English (en)
Other versions
KR20110112397A (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 KR20110112397A publication Critical patent/KR20110112397A/ko
Application granted granted Critical
Publication of KR101324799B1 publication Critical patent/KR101324799B1/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/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • 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
    • 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/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • 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/126Character encoding
    • 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/163Handling of whitespace
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/413Classification of content, e.g. text, photographs or tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/414Extracting the geometrical structure, e.g. layout tree; Block segmentation, e.g. bounding boxes for graphics or text

Abstract

본 발명의 상이한 실시예들은 비구조화된 문서를 분석하여 구조화된 문서를 정의하기 위한 상이한 기술들을 이용한다. 비구조화된 문서는 여러 원시 요소들을 포함하지만, 원시 요소들 간의 구조적 관계 및/또는 이들 원시 요소들에 기초하여 문서의 구조적 속성들을 지정하는 구조적 요소들을 포함하지 않는다. 구조적 문서를 정의하기 위해, 비구조화된 문서의 원시 요소들이 비구조화된 문서의 다양한 기하학적 속성들을 식별하는데 사용된다. 식별된 기하학적 속성들 및 원시 요소들의 다른 속성들이 구조적 요소들, 이를테면 연관된 원시 요소들(예컨대, 워드들, 단락들, 결합된 그래프들 등), 테이블들, 가이드들, 여백들 등 뿐만 아니라 원시 및 구조적 요소들을 통한 읽기 흐름을 정의하는데 사용된다. 기하학적 분석의 효율성 및 문서 재구조화 프로세스들의 효율성을 향상시키는 다양한 방법들(예컨대, 계층적 프로파일링, 효율적인 클러스터 분석 기술들, 효율적인 데이터 구조들)이 제공된다.

Description

문서 재구조화를 위한 방법 및 시스템{METHODS AND SYSTEM FOR DOCUMENT RECONSTRUCTION}
본 발명은 문서 재구조화에 관한 것이다. 구체적으로, 본 발명은 비구조화된 문서로부터 구조화된 문서를 정의하기 위한 방법, 이러한 프로세스들의 효율성을 향상시키기 위한 방법, 및 구조화된 문서들의 디스플레이 및 이들과의 상호작용의 향상을 위한 방법에 관한 것이다.
문서들은 정의된 위치들에서의 페이지 상에 그려진 원시 요소들의 집합(primitive element)과 다름 없게 종종 정의된다. 예를 들어, PDF(portable document format) 파일은 구조에 대한 어떤 정의도 갖지 않을 수 있고 대신에 다양한 위치들에서 글리프들(glyphs), 모양들, 및 비트맵들을 그리는 명령어들에 불과하다.
사용자는 표준 모니터상의 문서를 볼 수 있고 구조를 추론할 수 있다. 그러나, 이러한 파일은 단지 원시 요소들의 집합이기 때문에, 문서 보기 애플리케이션은 문서의 의도된 구조에 대한 정보를 갖고 있지 않다. 예를 들어, 테이블이 일련의 선들 및/또는 직사각형으로 디스플레이 되고 이 선들 사이에 텍스트가 들어가 있어, 이를 사람이 테이블로 인식한다. 그러나, 문서를 디스플레이하는 애플리케이션은 이 문서가 이러한 정보를 포함하고 있지 않기 때문에 텍스트를 그룹화하는 것이 행(row) 및 칼럼(colume)에 기초하여 서로 관계를 갖는다는 표시를 갖지 않는다. 마찬가지로, 애플리케이션은 페이지를 통하는 텍스트의 흐름(예컨대, 하나의 칼럼에서 다음 칼럼으로의 흐름, 또는 삽입된 이미지 주위의 흐름), 또는 사용자에 의해 바로 결정될 수 있는 다양한 다른 중요한 특성들의 표시를 갖지 않는다.
문서 구조에 대한 정보의 부족은 사용자가 단순히 표준 모니터상에서 문서를 보는 경우 항상 문제가 되는 것은 아니다. 그러나, 파일이 구조, 및 요소들 간의 관계를 갖는 워드 프로세서, 이미지-편집 애플리케이션 등에 의해 생산된 문서인 것처럼 사용자가 이 파일에 액세스하고 이를 편집할 수 있는 것이 종종 중요하다.
따라서, 비구조화된 문서를 재구조화할 수 있는 방법이 필요하다. 유사하게, 이러한 재구조화된 문서 구조를 이용하여 (예컨대, 전체 문서를 한번에 스크린상에 디스플레이하는 것이 현실적이지 않은 작은 스크린 장치들의 경우에) 문서의 디스플레이를 이상화하거나, 또는 문서의 요소들의 지능적인 선택을 가능하게 하는 방법이 필요하다.
최근 사회에서, 보다 많은 컴퓨팅 애플리케이션들이 핸드헬드 장치들(예컨대, 셀 폰, 매체 재생기 등)로 옮겨가고 있다. 따라서, 문서 재구조화 기술들은 일반적으로 표준 퍼스널 컴퓨터보다 적은 연산 전력을 갖는 장치들상에서 실행 가능할 필요가 있다. 그러나, 문서 재구조화는 종종 상당히 연산 및 메모리 집약적인 절차를 사용하는데, 이를테면 클러스터 분석, 및 메모리의 큰 덩어리의 사용이 있다. 따라서, 일반적으로 문서 재구조화에서 더 높은 효율성을 가능하게 하고 구체적으로 클러스터 분석을 가능하게 하는 기술들이 더욱 필요하다.
본 발명의 상이한 실시예들은 비구조화된 문서를 분석하여 구조화된 문서를 정의하기 위한 상이한 기술들을 사용한다. 일부 실시예들에서, 비구조화된 문서는 많은 원시 요소들을 포함하지만, 원시 요소들 간의 구조적 관계 및/또는 이 원시 요소들에 기초한 문서의 구조적 속성들을 지정하는 구조적 요소들을 포함하지 않는다. 따라서, 구조화된 문서를 정의하기 위해, 일부 실시예들은 비구조화된 문서의 원시 요소들을 이용하여 비구조화된 문서의 다양한 기하학적 속성을 식별하고 그 다음 식별된 기하학적 속성들 및 원시 요소들의 다른 속성들을 이용하여 구조적 요소들, 이를테면 연관된 원시 요소들(예컨대, 워드들, 단락들, 결합된 그래프들 등), 테이블, 가이드, 여백 등을 정의할 뿐만 아니라 원시 및 구조적 요소들을 통하는 읽기 흐름을 정의한다.
언급된 바와 같이, 일부 실시예들은 원시 요소들을 이용하여 다양한 기하학적 속성들을 식별한다. 예를 들어, 일부 실시예들은 원시 요소들의 세트들 및 경계들에 의해 경계가 이루어진 영역들 간의 경계들을 식별하는 방법을 제공한다. 이 방법은 식별된 영역들을 이용하여 문서에 대한 구조적 요소들을 정의하고, 원시 요소들 및 구조적 요소들에 기초하여 구조화된 문서를 정의한다. 일부 실시예들에서, 구조적 요소들을 정의하는 것은 각 영역을 별도로 분석하여 특정 영역 내의 원시 요소들의 세트들 간의 연관성을 생성한다. 일부 실시예들에서, 구조화된 문서를 정의하는 것은 식별된 영역들 간의 계층적 관계를 식별하는 것을 포함한다.
일부 실시예들은 다양한 워드들을 포함하는 비구조화된 문서를 분석하는 방법을 제공하는데, 각 워드는 연관된 글리프들의 세트이고 각 글리프는 위치 좌표를 갖는다. 방법은 위치 값들의 클러스터들을 식별하는데, 여기서 각 위치 값은 하나의 워드와 연관되고, 워드 정렬에 기반이 되며, 해당 워드의 글리프들의 위치 좌표로부터 도출된다. 위치 값들의 식별된 클러스터들에 기초하여, 방법은 워드들에 대한 정렬 가이드들의 세트를 식별하는 워드들에 대한 경계 요소들의 세트를 정의한다. 방법은 글리프들 및 정의된 경계 요소들에 기초하여 구조화된 문서를 정의한다. 일부 실시예들은 또한 한 쌍의 경계 요소들 간의 적어도 하나의 흰 공간 영역을 정의하고 흰 공간 영역에 기초하여 구조화된 문서를 더욱 정의한다. 일부 실시예들은 밀도 클러스터링(clustering)을 이용하여 위치 값들의 클러스터들을 식별한다.
일부 실시예들은 식별된 기하학적 속성들 및 원시 요소들의 다른 속성들을 이용하여 구조적 요소들을 정의할 뿐만 아니라 원시 및 구조적 요소들을 통하는 읽기 흐름을 정의한다. 예를 들어, 일부 실시예들은 여러 글리프들을 포함하는 비구조화된 문서를 분석하는 방법을 제공하는데, 각각의 글리프는 비구조화된 문서 내의 위치를 갖는다. 글리프들의 위치들에 기초하여, 방법은 상이한 세트들의 글리프들을 상이한 워드들로 식별하기 위해 상이한 세트들의 글리프들 간의 연관성(associations)을 생성한다. 이 방법은 상이한 워드들의 세트들을 상이한 단락들로 식별하기 위해 상이한 워드들의 세트들 간의 연관성을 생성한다. 방법은 단락들을 통하는 읽기 순서를 정의하기 위해 인접하지 않은 단락들 간의 연관성을 정의한다. 상이한 워드들의 세트들을 상이한 단락들로 식별하기 위해 상이한 워드들의 세트들 간의 연관성을 생성하기 위해서, 일부 실시예들은 상이한 워드들의 세트들 간의 연관성을 상이한 텍스트 라인들로 생성하고, 상이한 텍스트 라인들의 세트들 간의 연관성을 상이한 단락으로서 생성한다.
일부 실시예들은 글리프들의 세트들 간의 경계들을 식별하고 여러 경계들이 테이블을 형성하는 것을 식별하는 방법을 제공한다. 이 방법은 여러 열 및 칼럼으로 배열된 여러 셀들을 포함하는 테이블에 기초하여 표로 나타낸 구조적 요소를 정의하는데, 각 셀은 연관된 글리프들의 세트를 포함한다. 일부 실시예들은 더 큰 직사각형 모양 및 이 더 큰 직사각형 모양 내에 포함된 여러 직사각형 모양들을 형성하는 경계들의 세트를 식별하여 테이블을 형성하는 것을 식별한다. 일부 실시예들에서, 식별된 경계들 중 적어도 일부는 셀들을 형성하는 연관된 글리프들의 세트들의 위치들에 기초하여 추론된다.
일부 실시예들은 각각이 단일 객체로 정의되는 여러 원시 그래픽 요소들을 포함하는 비구조화된 문서를 분석하기 위한 방법을 제공한다. 이 문서는 원시 그래픽 요소들이 그려지는 순서를 나타내는 그리기 순서를 갖는다. 방법은 그리기 순서에 있어 연속적인 원시 그래픽 요소들 간의 위치 관계를 식별한다. 위치 관계에 기초하여, 방법은 여러 원시 그래픽 요소들로부터 단일 구조적 그래픽 요소를 정의한다. 일부 실시예들은 제1 및 제2 원시 그래픽 요소들을 포함하는 구조적 그래픽 요소의 크기를 계산하여 그리기 순서에 있어 연이은 제1 및 제2 원시 그래픽 요소 간의 위치 관계를 식별한다.
일부 실시예들은 보다 효과적으로 기하학적 분석 및 문서 재구조화를 실행하는 방법들을 제공한다. 예를 들어, 일부 실시예들은 복수의 원시 요소들을 포함하는 구조화된 문서를 정의하기 위한 문서 재구조화 작업들의 디폴트 세트를 제공하는 방법을 제공한다. 방법은 프로파일들의 계층적 세트를 제공하는데, 각 프로파일은 (i)문서 재구조화 결과들의 세트 및 (ii)중간 문서 재구조화 결과들이 이 프로파일에 대한 잠재적 문서 재구조화 결과들과 일치하는 경우 문서 재구조화 작업들을 수정하기 위한 결과들을 포함한다. 계층 구조 내의 더 낮은 레벨에서의 프로파일로부터의 명령어들은 더 높은 레벨에서의 프로파일로부터의 명령어들에 우선한다. 일부 실시예들에서, 특정 프로파일을 위한 명령어들은 중간 문서 재구조화 결과들이 이 프로파일에 대한 잠재적 문서 재구조화 결과들과 일치하는 경우 테스트되어야 하는 계층적 프로파일들의 세트 내의 더 낮은 레벨의 프로파일들의 서브세트를 포함한다.
일단 구조화된 문서가 정의되면, 일부 실시예들은 구조화된 문서와의 사용자 상호동작을 최적화하기 위한 다양한 기술들을 제공한다. 예를 들어, 일부 실시예들은 비구조화된 문서를 분석하여 구축된 구조적 요소들의 계층 구조를 포함하는 구조화된 문서를 디스플레이하기 위한 방법을 제공한다. 이 방법은 장치(예컨대, 작은 스크린 장치) 상에 구조화된 문서를 디스플레이한다. 이 방법은 문서 내의 관심 위치를 수신하고, 계층 구조 내의 구조적 요소를 관심 위치에 기초하여 관심 영역으로 식별한다. 이 방법은 문서의 디스플레이를 수정하여 식별된 관심 영역을 강조한다. 일부 실시예들은 관심 위치를 포함하는 계층 구조의 가장 낮은 레벨의 구조적 요소를 식별하고 관심 영역으로 충족된 구조적 요소에 도달할 때까지 가장 낮은 레벨에서 식별된 구조적 요소를 포함하는 계층 구조의 더 높은 레벨들에서의 구조적 요소들을 식별하여 구조적 요소를 식별한다. 일부 실시예들은 또한 관심 영역으로부터 움직이고 문서의 디스플레이를 수정하여 구조적으로 연관된 관심 영역을 강조하는 입력을 수신한다.
일부 실시예들은 다양한 글리프들을 포함하는 비구조화된 문서 내의 텍스트의 선택을 정의하기 위한 방법을 제공한다. 이 방법은 연관된 글리프들의 세트들 및 글리프들을 통하는 읽기 흐름을 지정하는 읽기 순서를 식별한다. 이 방법은 문서를 디스플레이하고 디스플레이된 문서 내의 텍스트의 선택을 위한 시작 지점 및 종료 지점을 수신한다. 방법은 식별된 글리프들의 세트들 및 의도된 읽기 흐름을 이용하여 시작 지점으로부터 종료 지점으로의 텍스트의 선택을 정의한다. 일부 실시예들에서, 글리프들의 연관된 세트들은 단락들이고 읽기 순서는 인접하지 않은 제1 단락으로부터 제2 단락으로의 읽기 흐름을 지정한다.
일부 실시예들은 기하학적 분석 및 문서 재구조화 프로세스들의 효율성을 향상시키는 방법들을 제공한다. 일부 실시예들은 기하학적 분석 및/또는 문서 재구조화를 위한 클러스터 분석을 사용하는데, 이는 연산-집중 프로세스가 될 수 있다. 따라서, 일부 실시예들은 문서 내에서 자신의 위치에 따라 정의되는 여러 원시 요소들을 포함하는 비구조화된 문서에 대한 구조를 정의하는 방법을 제공한다. 이 방법은 가장 가까운 원시 요소들의 쌍으로 되는 그룹화를 식별하고 가장 가까운 쌍에서 가장 먼 쌍으로의 순서에 기초하여 쌍으로 되는 원시 요소들을 정렬시킨다. 이 방법은 쌍으로 되는 원시 요소들 중 어는 것들이 충분히 떨어져 있어 분할(partition)을 형성하는지를 식별하는 단일 값을 저장한다. 이 방법은 문서에 대한 구조적 요소들을 정의하기 위해 저장된 값을 이용하여 분할들을 식별하고 분석한다.
일부 실시예들은 또한 효율적인 데이터 구조들을 이용하기 위한 방법들을 제공한다. 예를 들어, 일부 실시예들은 다양한 원시 요소들을 포함하는 비구조화된 문서를 분석하고 조작하기 위한 여러 상이한 프로세스들을 제공한다. 일부 실시예들은 또한 원시 요소들과 연관된 데이터를 위한 저장소를 제공한다. 데이터의 적어도 일부는 프로세스들과는 별도의 메모리 공간에 저장되고 적어도 두 상이한 프로세스들에 의해 공유된다. 프로세스들은 데이터데 대한 참조들을 이용하여 데이터에 액세스한다. 이 데이터는 프로세스들에 의해 복제되지 않는다.
본 발명의 새로운 특징들이 첨부된 청구항들에 제시된다. 그러나 설명을 위한 목적으로, 본 발명의 여러 실시예들이 다음의 도면들에 제시된다.
도 1은 일부 실시예들의 전반적인 재구조화 흐름을 도시한 도면.
도 2는 문서의 페이지 및 이 페이지 상에서 수행되는 일부 실시예들의 기하학적 분석 및 문서 재구조화로부터의 다양한 결과들을 도시한 도면.
도 3은 문서의 페이지의 구역들을 식별하고 이 페이지에 대한 구역 트리를 생성하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 4는 페이지 및 이 페이지의 영역들을 식별하고 일부 실시예들에서 페이지에 대한 구역 트리를 생성하는 시퀀스를 도시하는 도면.
도 5는 여러 구역들을 포함하는 문서의 페이지를 도시한 도면.
도 6은 회전 그룹들을 포함하는 구역 경계 그래픽 및 복수의 구역들을 포함하는 페이지를 도시한 도면.
도 7은 도 5로부터의 페이지에 대한 일부 실시예들의 구역 트리를 도시한 도면.
도 8은 페이지 상에 회전 그룹들을 정의하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 9는 구역 경계들 및 교차점들을 식별하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 10은 다양한 그래픽 및 텍스트를 포함하는 페이지를 도시한 도면.
도 11은 도 10의 페이지에 대한 구역 경계 간격들(intervals) 및 교차점들을 도시한 도면.
도 12는 구역들을 식별하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 13 및 14는 도 12의 프로세스를 적용하여 도 10의 페이지의 구역들을 식별하는 것을 도시한 도면.
도 15는 구역 트리를 생성하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 16은 크기로 정렬되고 노드 그래프로 배치되는 도 10의 페이지로부터의 구역들을 도시한 도면.
도 17은 일부 실시예들의 구역 분석 애플리케이션의 소프트웨어 아키텍처를 개념적으로 도시한 도면.
도 18은 문서 내의 가이드 및 여백을 식별하기 위한 일부 실시예들의 전체 프로세스를 도시한 도면.
도 19는 두 텍스트 칼럼을 갖는 페이지 및 이 페이지에 대해 식별된 가이드 및 여백을 도시한 도면.
도 20은 밀도 클러스터링을 수행하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 21은 왼쪽 정렬 가이드를 결정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 22 내지 24는 페이지 상의 왼쪽-정렬 가이드의 식별을 도시한 도면.
도 25는 오른쪽-정렬 가이드들을 결정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 26은 문서의 영역에 대한 여백들을 결정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 27 내지 29는 페이지 상의 여백의 식별을 도시한 도면.
도 30은 일부 실시예들의 가이드 및 여백 분석 애플리케이션의 소프트웨어 아키텍처를 개념적으로 도시한 도면.
도 31은 문서의 레이아웃 및 흐름을 결정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 32는 문서의 페이지에 대한 레이아웃 및 흐름 정보의 결정의 일부 실시예들의 시퀀스를 도시한 도면.
도 33은 텍스트 라인들의 식별 및 병합을 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 34는 겹치는 텍스트 라인들의 여섯 그룹들을 갖는 페이지를 도시한 도면.
도 35는 도 34로부터의 텍스트 라인들의 그룹들을 병합하는 것을 도시한 도면.
도 36은 차이 클러스터링을 수행하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 37은 차이 클러스터링의 예를 도시한 도면.
도 38은 텍스트의 라인들을 나누기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 39는 페이지 상의 텍스트 라인들을 어디에서 나눌지에 관한 식별을 나타내는 시퀀스를 도시한 도면.
도 40은 텍스트 라인들을 단락들로 그룹화하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 41은 페이지 상의 단락들의 식별을 도시한 도면.
도 42는 문서의 부분 내의 칼럼들 및 레이아웃들을 식별하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 43 및 44는 두 상이한 페이지들 위의 단락들을 도시한 도면.
도 45 및 46은 도 43 및 44의 페이지들에 대한 흐름 그래프들의 생성을 도시한 도면.
도 47은 일부 실시예들의 레이아웃의 소프트웨어 아키텍처 및 흐름 분석 애플리케이션의 소프트웨어 아키텍처를 개념적으로 도시한 도면.
도 48은 문서의 부분 내의 테이블들을 식별하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 49는 똑바른 경계들을 갖는 테이블의 예를 도시한 도면.
도 50은 연결되지만 완전하지 않은 경계들을 갖는 테이블의 예를 도시한 도면.
도 51은 경계들이 없는 테이블의 예를 도시한 도면.
도 52는 연결되지 않은 경계들을 갖는 테이블의 예를 도시한 도면.
도 53은 완전한 경계들의 세트를 갖는 테이블들을 식별하고 식별된 테이블들의 셀, 열, 및 칼럼을 정의하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 54는 완전한 경계들을 갖는 테이블을 포함하는 페이지를 도시한 도면.
도 55는 연결된 경계들의 세트를 갖는 테이블들을 식별하고 재구조화하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 56은 연결된 경계들의 세트를 갖는 테이블의 식별 및 재구조화를 보여주는 시퀀스를 도시한 도면.
도 57은 경계들이 없거나 연결되지 않은 경계들을 갖는 테이블들을 식별하고 재구조화하기 위한 일부 실시예들의 프로세스를 개념적으로 도시하는 도면.
도 58 내지 60은 도 57의 프로세스를 페이지에 적용하여 연결되지 않은 경계들을 갖는 테이블을 식별하는 것을 도시한 도면.
도 61은 일부 실시예들의 테이블 식별 애플리케이션의 소프트웨어 아키텍처를 개념적으로 도시한 도면.
도 62는 개별 그래프들을 결합된 그래프들로 결합시키기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 63은 페이지 상의 그래프들을 결합시키는 것을 도시한 도면.
도 64는 결합되어야 할 그래프들을 식별하도록 경계 클러스터링을 수행하고 이 그래프들을 결합시키기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 65는 각각 스프레드(spread)가 계산되는 두 그래픽 객체들을 갖는 두 페이지를 도시한 도면.
도 66은 클러스터를 서브시퀀스들로 프로세싱하기 위한 일부 실시예들의 프로세스를 도시한 도면.
도 67은 결합되어야 할 그래프들을 식별하고 이 그래프들을 하나의 그래픽으로 연관시키기 위한 일부 실시예들의 그래프 결합 애플리케이션을 개념적으로 도시한 도면.
도 68은 콘텐츠 유형에 대한 콘텐츠 프로세싱을 조절하기 위한 프로파일들을 이용하는 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 69는 #10 봉투의 프로파일에 알맞은 문서를 도시한 도면.
도 70은 일부 실시예들의 프로파일들의 계층적 세트를 도시한 도면.
도 71은 계층적 프로파일들에 따른 콘텐츠를 프로세싱하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 72는 계층적 프로파일을 이용하여 문서 재구조화를 수행하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 73은 어떻게 일부 실시예들이 특정 방법을 수행하는 가장 낮은 레벨 활성 프로파일을 식별하는지를 도시한 도면.
도 74 내지 77은 네 개의 상이한 페이지들에 대한 일부 실시예들의 예시적인 페이지 프로파일 일치 프로세스를 도시한 도면.
도 78은 일부 실시예들에서 관심 위치의 식별에 기초하여 문서를 디스플레이하는 프로세스를 개념적으로 도시한 도면.
도 79는 본 발명의 일부 실시예들에 따라 관심 위치가 선택되고 디스플레이가 수정되는 작은 스크린 장치 상의 시퀀스를 도시한 도면.
도 80은 관심 영역을 식별하고 관심 영역을 디스플레이 장치 상에 그리기 위한 변형을 적용하기 위한 일부 실시예들의 제1 상세 프로세스를 도시한 도면.
도 81은 관심 영역을 식별하고 디스플레이 장치 상에 관심 영역을 그리도록 변형을 적용하기 위한 일부 실시예들의 제2 상세 프로세스를 도시한 도면.
도 82는 의미적으로 재구조화된 문서를 디스플레이하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 83은 일부 실시예들의 도 82의 프로세스의 적용을 도시한 도면.
도 84는 의미적으로 재구조화된 문서 내의 영역들 간을 네비게이팅하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 85는 작은 스크린 장치에 대한 의미적으로 재구조화된 문서의 레이아웃을 수정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 86은 큰 스크린 상에 디스플레이될 문서의 페이지 및 본 발명의 일부 실시예들에 따라 작은 스크린 장치 상의 페이지의 일부의 디스플레이를 도시한 도면.
도 87은 의미적으로 재구조화된 문서 내의 텍스트의 선택을 결정하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 88은 일부 실시예들에 따른 의미적으로 재구조화된 문서의 페이지 상의 텍스트의 선택의 시퀀스를 도시한 도면.
도 89는 의미적으로 재구조화된 문서 내의 텍스트의 선택을 정의하기 위한 일부 실시예들의 제1 상세 프로세스를 도시한 도면.
도 90은 의미적으로 재구조화된 문서의 페이지 상의 선택을 위한 제1 시작 지점 및 종료 지점을 도시한 도면.
도 91은 도 89의 프로세스에 따라 도 90의 시작 지점 및 종료 지점에 의해 정의되는 선택을 도시한 도면.
도 92는 의미적으로 재구조화된 문서의 페이지 상의 선택을 위한 제2 시작 지점 및 종료 지점을 도시한 도면.
도 93은 도 89의 프로세스에 따라 도 92의 시작 지점 및 종료 지점에 의해 정의되는 선택을 도시한 도면.
도 94는 의미적으로 재구조화된 문서 내의 텍스트의 선택을 정의하기 위한 일부 실시예들의 제2 상세 프로세스를 도시한 도면.
도 95는 도 94의 프로세스에 따라 도 90의 시작 및 종료 지점에 의해 정의되는 선택을 도시한 도면.
도 96은 도 94의 프로세스에 따라 도 92의 시작 지점 및 종료 지점에 의해 정의되는 선택을 도시한 도면.
도 97은 클러스터 분석을 이용하여 제한된 리소스 장치 상의 문서를 의미적으로 재구조화하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 98은 문서가 의미적으로 재구조화되는 일부 실시예들의 시퀀스를 도시한 도면.
도 99는 간접적으로 정렬된 배열들을 이용하여 데이터 세트를 분할하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 100은 9개의 데이터 아이템을 갖는 데이터 세트의 분할을 도시한 도면.
도 101은 동시에 복수의 거리 스케일에서 클러스터 분석을 수행하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 102는 클러스터 분석을 수행하기 위한 일부 실시예들의 클러스터 분석 애플리케이션의 소프트웨어 아키텍처를 개념적으로 도시한 도면.
도 103은 문서를 효과적으로 재구조화하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 104는 도 103의 프로세스에 따라 문서가 파싱되고 분석되는 시퀀스를 도시한 도면.
도 105는 본 발명의 일부 실시예들에 따라 데이터가 저장되는 방식을 도시한 도면.
도 106은 효율적인 메모리 관리 기술들을 이용하여 문서 재구조화 프로세스들을 수행하는 API를 개념적으로 도시한 도면.
도 107은 문서를 재구조화하고, 디스플레이하며, 문서와 상호작용하기 위한 일부 실시예들의 애플리케이션의 소프트웨어 아키텍처를 개념적으로 도시한 도면.
도 108은 도 107에 설명된 애플리케이션과 같은 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체를 제조하기 위한 일부 실시예들의 프로세스를 개념적으로 도시한 도면.
도 109는 본 발명의 일부 실시예들이 수행되는 컴퓨터 시스템을 개념적으로 도시한 도면.
다음의 설명에서, 여러 상세한 내용들이 설명을 위해 제공된다. 그러나, 당업자라면 본 발명이 이러한 구체적인 내용 없이도 실시될 수 있음을 알 수 있다. 예를 들어, 일부 경우에서, 아래 설명된 기술들은 특정 순서로 발생하는 것으로 설명되었다. 그러나, 일부 실시예들에서, 기술들은 설명된 것과 다른 순서로 수행된다. 더욱이, 기술들이 왼쪽에서 오른쪽으로 읽히는 언어들(예컨대, 영여)에 대해 설명되었지만, 당업자라면 본 기술들은 오른쪽에서 왼쪽으로 읽히는 언어에 대해 쉽게 적용됨을 알 수 있다.
I. 개요
본 발명의 일부 실시예들은 비구조화된 문서로부터 구조화된 문서를 정의하기 위한 새로운 방법들을 제공한다. 일부 실시예들에서, 비구조화된 문서는 원시적인 요소들만을, 이를테면 모양들(예컨대, 벡터 그래픽), 이미지들(예컨대, 비트맵), 및 글리프들만을 포함하도록 정의되는 문서이다. 일부 실시예들에서, 글리프는 텍스트 글자(예컨대, 문자, 숫자, 마침표, 또는 다른 인라인 문자)의 시각적 표현, 글자들의 집합, 또는 글자의 일부이다. 일부 실시예들에서, 글리프는 이 글리프의 아웃라인에 대한 경로 정의들을 포함하는 스케일가능한 벡터 그래픽들의 사전 지정된 집합이 될 수 있다. 일부 실시예들에서, 글리프는 사전 지정된 래스터 이미지(raster image) 또는 다양한 크기들에 대해 최적화된 래스터 이미지들의 집합이 될 수 있다. 예로서, 문자 "i"는 두 개의 서브 경로를 갖는 하나의 경로인 단일 글리프에 의해 나타날 수 있는데, 하나는 점의 아웃라인을 위한 것이고 다른 하나는 아래 부분의 아웃라인을 위한 것이다. 또 다른 예로서, 세 개의 문자들의 조합 "ffi"가 순서대로 발생하는 경우, 때때로 연자(ligature)라고 불리는 단일 글리프에 의해 표현되는데, 개별적으로 발생하는 문자들과는 약간 상이한 방식으로 그려진다. 제3 예로, "c"와 같은 강조된 문자들은 때때로 하나보다 많은 글리프(예컨대, 문자에 대해 하나, 액센트에 대해 하나)에 의해 표현되고 때때로 단일 글리프(문자와 액센트를 결합)에 의해 표현된다.
일부 실시예들의 비구조화된 문서는 원시 요소들 간의 임의의 관계 또는 연관성을 지정하지 않는 반면, 다른 실시예들에서 이는 이러한 관계 및 연관성의 최소양을 지정한다. 일부 실시예들에서, 비구조화된 문서는 일정의 구조를 가질 수 있지만 이 구조는 인식되지 못하거나 신뢰할 만한 것이 못 된다. 일부 실시예들에서 비구조화된 문서는 알려지지 않은 구조를 갖거나 비구조화된 것으로 간주된다.
일부 실시예들은 비구조화된 문서로부터 원시 요소들 간의 연관성 및 관계, 원시 요소들의 그룹화 및 순서, 및 원시 요소들의 그룹들의 속성을 포함하는 구조화된 문서를 생성한다. 예를 들어, 일부 실시예들은 비구조화된 문서의 원시 요소들을 이용하여 비구조화된 문서의 다양한 기하학적 속성들을 식별하고 (원시 요소들의 다른 속성들과 함께) 이 식별된 기하학적 속성들을 이용하여 구조적 요소들을 정의한다. 일부 실시예들의 구조적 요소들은 연관된 원시 요소들(예컨대, 워드들, 단락들, 결합된 그래프들 등), 가이드, 여백, 텍스트 흐름, 테이블 등을 포함한다. 이러한 구조적 요소들은 일부 실시예들에서 계층적 방식으로 연관된다(예컨대, 단락은 텍스트 라인들을 포함하고, 텍스트 라인은 워드들을 포함하며, 워드는 원시 글리프들을 포함한다). 일부 실시예들에서, 구조화된 문서는 두 목적을 수행한다 - 이는 연관된 요소들(예컨대, 테이블을 구성하는 요소들)을 식별하고 원시 요소들을 통하는 흐름 순서(즉, 사람이 문서 내의 원시 요소들을 통하여 읽도록 예상되는 순서)를 식별한다.
비구조화된 문서를 수신하자마자, 일부 실시예들은 우선 문서를 이의 구성 요소들(예컨대, 원시 요소들 및 이의 연관된 정보 이를 테면 좌표 위치, 그리기 순서 등)로 파싱한다. 예를 들어, 텍스트의 큰 블록은 비구조화된 문서에서 많은 문자 글리프들로 정의될 수 있는데, 각각은 자신의 앵커들(anchors)이 특정 페이지 상에 놓이는 x 및 y 좌표들 뿐만 아니라 각 글리프의 크기를 결정한 스케일 인자(및 적용될 임의의 다른 선형 변형)를 갖고, 각 글리프는 (하나의 글리프가 또 다른 것 위에 놓이는 경우 수행되는 합성 작업과 관련된) 특정 순서로 페이지 상에 그려진다. 일부 실시예들은 그 다음 원시 요소들에 대한 기하학적 분석을 수행하여 문서의 기하학적 속성들을 정의한다. 예를 들어, 일부 실시예들은 원시 요소들을 분석하여 원시 요소들 간의 경계들 및 이 경계들에 의해 경계가 이루어진 영역들을 식별한다.
도 1은 일부 실시예들의 전반적인 흐름을 도시한다. 도시된 바와 같이, 문서(100)는 우선 기하학적 분석 모듈(110)에 의해 (일부 실시예들에서, 원시 요소들을 식별하기 위한 파싱 후) 분석된다. 기하학적 분석 모듈들(110)은 문서를 분석하여 기하학적 속성들 이를 테면 경계들 및 경계들에 의해 경계가 이루어진 영역들을 식별한다. 일부 실시예들에서, 영역들은 원시 요소들 이를 테면 직선들 및 좁은 직사각형들(예컨대, 특정 원시 모양 및 이미지)에 의해 경계가 이루어진 구역들을 포함한다.
도 2는 들어오는 문서의 페이지(200) 및 기하학적 분석 및 문석 재구조화로부터의 다양한 결과들을 도시한다. 들어오는 문서는 문서를 보는 사람이 텍스트, 경계, 테이블, 및 그래픽 객체로 인식하는 원시 요소들의 집합을 갖는 비구조화된 문서이다. 분석 결과(205)는 기하학적 분석 모듈들(110)이 문서(200) 내의 경계들(250)에 의해 분리된 두 구역들 Z1(240) 및 Z2(245)을 식별하였음을 보여준다.
일부 실시예들에서, 기하학적 분석 모듈들(110)에 의해 식별된 경계들은 또한 정렬 가이드들을 포함한다. 일부 실시예들에서, 정렬 가이드는 워드들의 시작 또는 끝(예컨대, 왼쪽 정렬 텍스트의 칼럼의 왼쪽 가장자리)에 의해 형성되는 수직 가장자리이다. 마찬가지로, 일부 실시예들에서, 기하학적 분석에 의해 식별되는 영역들은 글리프들의 그룹들 간(예컨대, 가이드들 간)의 채워지지 않은 흰 공간의 간격들을 포함한다. 이러한 간격들은 일부 실시예들에서 여백(gutter)라고 불린다.
분석 결과(210)는 텍스트의 제1 칼럼의 왼쪽 가장자리에서의 왼쪽 정렬 가이드(212) 및 텍스트의 두 칼럼 간의 흰 공간에 걸친 여백(214)(단순하게 하기 위해, 다른 가이드 및 텍스트 칼럼은 도시되지 않음)을 도시한다. 도 1에 도시된 바와 같이, 일부 실시예들의 의미적 분석 모듈들(110)의 출력은 구역(105), 가이드(115), 및 여백(125)이다.
기하학적 분석 모듈들(110)로부터의 데이터 출력이 문서 재구조화 모듈들(120)로 보내진다. 문서 재구조화 모듈들(120)은 비구조화된 문서를 분석하여 구조화된 문서를 정의하는 프로세스를 계속한다. 일부 실시예들에서, 문서 재구조화 모듈들(120)은 인접하는 구조적 요소들, 이를테면 텍스트, 테이블 및 모양을 정의하기 위해 원시 요소들 간의 연관성을 생성한다. 일부 실시예들은 또한 구조적 요소들의 계층 구조 및 구조적 요소들 간의 관계를 정의한다.
예를 들어, 일부 실시예들에서, 문서 재구조화 모듈들(120)은 글리프들 간의 연관성, 글리프들의 세트들, 글리프들의 세트들의 세트들 등을 생성한다. 일부 실시예들은 개별적인 글리프들을 워드들로 연관시키고, 워드들을 텍스트 라인들로 연관시키며, 텍스트 라인들을 단락들로 연관시킨다. 분석 결과(215)는 개별 라인들(217) 및 단락들(219)이 제1 텍스트 칼럼 내에서 식별되는 것을 보여준다.
문서 재구조화 모듈들(120)은 또한 글리프들을 통하는 텍스트 흐름을 정의하기 위해 글리프들의 레이아웃을 식별한다. 구체적으로, 텍스트 흐름을 정의하기 위해, 일부 실시예들은 글리프들을 통하는(또는 글리프들의 세트들을 통하는) 읽기 흐름을 식별하는데, 이는 사람이 페이지 상의 글리프들을 통과하여 읽도록 예상되는 순서(예컨대, 제1 칼럼의 바닥으로부터 제2 칼럼의 맨 위로, 중심의 별도의 텍스트 박스는 뛰어넘는 것 등)를 나타낸다. 분석 결과(220)는 두 칼럼이 문서(200) 내에서 식별되는 것을 나타내고 읽기 흐름(222)이 제1 칼럼의 바닥으로부터 제2 칼럼의 맨 위로 흐르는 것을 나타낸다. 일부 실시예들에서, 레이아웃 및 흐름의 식별 및 정의는 구역 결과들(205), 가이드 및 여백 결과들(210), 및 글리프 연관 결과들(215)을 활용한다.
문서 재구조화 모듈들(120)은 또한 글리프들과는 다른 원시 요소들 간의 또는 구조적 요소들 간의 연관성인 문서 내의 다른 구조적 요소들을 정의한다. 예를 들어, 일부 실시예들에서, 문서 재구조화 모듈들(120)은 문서 내의 테이블들을 기하학적 분석 모듈들(110)에 의해 식별된 영역들 간의 연관성 뿐만 아니라 영역들 내의 글리프들 및 글리프들의 세트들로 식별한다. 예를 들어, 일부 실시예들은 영역들을 테이블의 셀들로 연관시키고, 각 영역 내의 글리프들을 테이블 정보로 연관시킨다. 분석 결과(225)는 문서 재구조화 모듈들(120)에 의한 문서(200) 내의 9개의 셀들(229)을 갖는 테이블(227)의 식별을 도시한다. 일부 실시예들은 표로 나타낸 구조적 요소를 정의하여 테이블을 형성하는 원시 요소들을 연관시킨다. 초기 문서에서는, 테이블로 보여진 것은 연관되지 않은 원시 요소들(라인들 및 글리프들)의 집합으로 정의된 반면, 재구조화 후에 셀들은 표로 나타낸 구조적 요소에서 테이블 셀들로 식별되고 개별적으로 또는 집합적으로 편집가능하다. 더 설명되는 바와 같이, 일부 실시예들에서, 테이블 식별 및 재구조화는 구역 결과들(205), 글리프 연관 결과들(215) 및 레이아웃 및 흐름 결과(200)를 사용한다.
일부 실시예들은 또한 문서 내의 둘 이상의 원시 그래픽 요소들 또는 그래픽 객체들(예컨대, 모양, 이미지, 사진, 비트맵 등)이 하나의 구조적 그래픽 요소로 그룹화되어야 하는지를 식별한다. 예를 들어, 대부분 겹치는 두 객체들은 비구조화된 문서 내의 두 모양 또는 이미지로 정의되는 하나의 요소일 수 있다. 문서 재구조화 모듈들(120)은 이 두 객체를 하나의 객체로 결합시킨다. 분석 결과(230)는 초기 문서(200)로부터의 두 원시 모양(별 및 6각형)이 문서 재구조화 모듈들(120)에 의해 하나의 그래픽(232)으로 결합되었음을 도시한다.
도 1에 도시된 바와 같이, 문서 재구조화 모듈들(120)의 출력의 예들은 의미적 계층 데이터(135)(즉, 글리프들의 연관성), 레이아웃 및 흐름 데이터(145), 테이블 데이터(155), 및 결합된 그래프 데이터(165)를 포함한다. 더욱이, 일부 실시예들에서, 이 정보의 일부는 또한 여러 문서 재구조화 모듈들(120) 간에서 전달된다. 도 2는 이 모든 정보가 구조화된 문서(235)를 정의하는데 사용됨을 보여준다. 구조화된 문서(235)는 비구조화된 문서(200)와 동일한 외형을 갖지만, 구조화된 문서(235)는 구조적 요소들, 연관성, 관계 및 요소들의 계층 구조에 관한 정보를 포함하여, 편집, 보다 직관적인 디스플레이 등을 가능하게 한다.
문서 재구조화 모듈들(120)로부터의 데이터(일부 실시예들에서는, 기하학적 분석 모듈들(110)로부터의 데이터도 포함)가 문서 디스플레이 및 상호작용 모듈들(130)에 의해 사용된다. 문서 디스플레이 및 상호작용 모듈들(130)은 사용자가 문서를 보고, 편집하며, 스크롤링할 수 있도록 한다. 예를 들어, 시퀀스(140)는 똑바로 쥐어진 핸드헬드 장치 상에 두 텍스트 칼럼으로 디스플레이되는 문서를 보여준다. 핸드헬드 장치가 한쪽으로 회전하는 경우, 두 칼럼의 텍스트는 세 칼럼으로 재배열된다. 이 재배열은 요소들 간의 연관성, 특히 비구조화된 문서의 일부가 아닌 글리프들을 통하는 텍스트의 흐름에 의존하기 때문에, 재배열은 비구조화된 문서에 대해 이루어질 수 없다.
일부 실시예들에서, 문서 디스플레이 및 상호작용 모듈들은(130)은 또한 사용자에 의해 선택된 구조적 요소(예컨대, 단락, 그래픽 객체 등)를 식별할 수 있고 지능적으로 줌 처리하여 선택된 요소를 디스플레이한다. 일부 실시예들에서, 사용자는 관심 위치(즉, 디스플레이된 문서 내의 특정 위치)를 선택하고, 디스플레이 및 상호작용 모듈들(130)은 구조적 요소들의 계층 구조 내의 자격이 되는 구조적 요소를 식별한다. 일부 실시예들은 특정 유형들의 구조적 요소들을 자격이 되는 구조적 요소들로 정의한다. 자격이 되는 구조적 요소는 일부 실시예들에서 디스플레이에서 강조되는 관심 영역을 정의하는데 사용된다.
시퀀스(150)는 단락(170)의 선택(예컨대, 단락 내의 관심 위치의 선택) 및 이 단락 및 부근의 텍스트의 차후 지능적 디스플레이를 도시한다. 문서 디스플레이 및 상호작용 모듈들(130)은 또한 다른 특징들 이를 테면 텍스트 및 그래픽 객체의 지능적 선택, 문서에 대한 지능적 스크롤링 등을 제공한다.
일부 실시예들은 계층적 프로파일을 이용하여, 어떻게 기하학적 분석 및 문서 재구조화가 중간 분석 및 재구조화 결과들을 이용하여 문서에 대해 수행되는지를 수정한다. 일부 실시예들은 문서가 어떤 유형의 콘텐츠를 포함하는지를 나타내는 프로파일들에 대한 중간 결과들을 검사하고 이에 따라 재구조화 프로세스들을 변경한다. 일부 실시예들에서, 계층적 프로파일들은 분석 및 재구조화 모듈들에게 더 많거나 적은 프로세스를 수행하도록 하거나, 상이하게 프로세스들을 수행하도록 하거나, 프로세스들을 재수행하도록 지시할 수 있다. 예를 들어, 만약 중간 분석 결과들이 문서가 한 페이지 길이이고, 한 텍스트 칼럼을 갖으며, 모양이나 이미지가 없다고 나타내면, 일부 실시예들은 글리프들을 워드, 라인 및 단락들로 연관시키는 프로세스들만을 수행할 것이다. 예컨대, 테이블 식별은 수행되지 않을 것이다.
일부 실시예들은 보다 향상된 메모리 및 프로세싱 사용을 위한 다양한 새로운 효율성 기술들을 사용한다. 예를 들어, 일부 실시예들은 다른 요소들에 대해 상대적으로 어떠한 면에서 가깝게 배치되는 요소들의 그룹들을 식별하는데 사용되는 기술인 클러스터 분석을 이용하여 위에서 설명된 프로세스들 중 일부를 수행한다. 일부 실시예들은 클러스터 분석을 이용하여 x 좌표에서 시작하거나, 종료하거나, 이를 중심으로 하거나, 아니면 x 좌표와 동일하게 또는 거의 동일하게 정렬되는 여러 워드들에 기초한 가이드들을 식별한다. 일부 실시예들은 클러스터 분석을 이용하여 워드들 간의 간격들 및 이 워드들 간의 간격들보다 큰 간격들을 식별하기 위해 글리프들 간의 상이한 크기 간격들을 인식한다. 일부 실시예들은 또한 클러스터 분석을 이용하여 단일 그래픽으로 결합되어야 하는 원시 그래픽들(예컨대, 모양, 이미지)을 식별한다.
일부 실시예들은 정렬되지 않은 데이터를 참조하는 순서가 정해진 데이터(예컨대, 원시 요소 위치 데이터)를 이용하고 단일 값을 이용하는 데이터의 분할들을 저장하여 클러스터 분석을 효율적으로 수행한다. 본 발명에서 사용되는 용어인 분할(partition)은 시퀀스, 즉 선형으로 순서가 정해진 세트를 동일한 순서 관계를 갖는 시퀀스의 서브세트들인 서브시퀀스들로 나눈다. 더욱이, 분할은 (i)원래의 시퀀스의 모든 멤버가 분할의 서브시퀀스들 중 정확히 하나 내에 포함되고, (ii)분할의 서브시퀀스들 중 둘인 S 및 T에 대해, 순서 관계에 따르면 S의 모든 멤버들 이 T의 모든 멤버들보다 작거나 T의 모든 멤버들이 S의 모든 멤버들보다 작은 속성들을 갖는다. 분할을 단일 값으로 저장하는 것은 다양한 클러스터 분석 기능들, 이를테면 복수의 분할들을 검사하는 기능들이 일부 실시예들에서 보다 효율적으로 수행될 수 있게 한다.
일부 실시예들은 또한 애플리케이션 프로그래밍 인터페이스(application programming interface; API)의 사용자(예컨대, 프로그래머 또는 API를 이용하는 소프트웨어 애플리케이션)에게 데이터가 자유롭게 수정가능한 것으로 나타나면서 데이터의 복사량을 최소화하는 API를 이용하여 문서 재구조화 프로세스의 이득 효율성을 얻는다. 일부 실시예들은 데이터를 랜덤으로 순서가 정해진 어레이에 저장하고, 그 다음 데이터에 대한 참조들의 정렬된 어레이를 정의하고 이 정렬된 어레이를 여러 집합 객체들(예컨대, 문자 데이터의 집합인 문자 시퀀스 객체들) 사이에서 공유하여 메모리의 사용 및 프로세싱을 최적화한다. 이러한 효율성 향상 뿐만 아니라 다른 향상들이 일부 실시예들에서 사용되어 문서 재구조화가 제한된 리소스 장치, 이를테면 셀 폰, 매체 재생기 등(예컨대, iPhone®) 상에 수행될 수 있도록 한다.
일부 실시예들의 위에서 설명된 개괄 내용이 도 1 및 2에서 설명된 예들을 참조하여 제공되었지만, 당업자라면 이 예들은 본 발명의 일부 실시예들의 특징 및 작업을 제시하는 예시적인 실시예들로만 의도됨을 알 수 있다. 당업자라면 여러 실시예들이 도 1 및 2에 도시된 것들과 상이한 특징 및 작업들을 갖는 것을 알 수 있다. 예를 들어, 기하학적 분석이 모듈들(110)의 한 세트로서 설명되었지만, 당업자라면 일부 실시예들이 반드시 한번에 모든 기하학적 속성들을 식별할 필요가 없음을 알 수 있다. 예를 들어, 일부 실시예들은 기하학적 분석의 서브세트를 우선 수행하고(예컨대, 문서 내의 하나 이상의 구역을 식별하는 영역 분석) 그 다음 가이드 및 여백이 구역별로 식별된다.
일부 실시예들의 보다 자세한 예들이 아래에서 설명된다. 섹션 II은 경계 원시 요소들 및 구조화된 문서의 프레임워크를 형성하는 계층적 구조(예컨대, 문서 객체 모델)의 정의에 기초하여 문서의 영역들(즉, 구역들)의 식별을 설명한다. 섹션 III은 그 다음 글리프들의 경계 요소들(예컨대, 정렬 가이드들) 및 정렬 포인트들(여백들) 간의 특정 빈 공간들의 식별을 설명한다. 다음으로, 섹션 IV은 글리프들 간의 연관성들 및 글리프들의 세트들의 생성을 자세히 설명하여 구조적 요소들 이를 테면 워드들, 텍스트 라인들, 단락들, 칼럼들 등 뿐만 아니라 이러한 구조적 요소들(뿐만 아니라 다른 요소들 이를 테면 그래픽, 테이블 등)을 통과하는 흐름 순서의 정의를 정의한다. 섹션 V는 원시 요소들로부터의 테이블들의 식별 및 원시 요소들 간의 연관성의 생성을 통한 표로 나타낸 구조적 요소를 형성하는 것을 설명하는 한편, 섹션 VI는 함께 그룹화되어야 하는 원시 그래픽 요소들의 식별 및 이러한 원시 요소들 간의 연관성의 생성을 설명하여 합성 그래픽 요소들을 정의한다. 다음, 섹션 VII는 중간 프로세싱 결과들의 사전정의된 프로파일들의 세트로의 매칭에 기초하여 (섹션 II-VI)에 자세히 설명된 문서 재구조화의 예를 이용하여) 콘텐츠 프로세싱의 수정을 설명하는데, 이는 콘텐츠 프로세싱의 효율성 및 정확성을 향상시킬 수 있다.
다음으로, 섹션 VIII은 구조화된 문서(예컨대 문서 객체 모델에 의해 정의되는 문서)를 이용하여 문서를 작은 스크린 장치(예컨대, 핸드헬드 전화 또는 매체 재생기) 상에 디스플레이하는 여러 특징들을 자세히 설명한다. 문서 디스플레이를 작은 스크린에 맞도록 조정하는 것 및 식별된 관심 영역의 디스플레이가 설명된다. 섹션 IX는 사용자 입력에 응답하여 구조화된 문서를 이용하여 텍스트(또는 문서의 다른 요소들)의 선택을 정의하는 것을 설명한다.
섹션 X는 그 다음 클러스터 분석 기술들의 효율성을 향상시키기 위한 다양한 방법들을 설명하는데, 이는 (다른 사용들 중에서) 문서 재구조화 프로세스에서 정렬 가이드, 워드 및 글리프 간격, 및 합성 그래픽의 식별에 대해 사용된다. 다음으로, 섹션 XI는 문서의 보다 효율적인 파싱 및 분석을 가능하게 하는 방법 및 데이터 구조를 자세히 설명한다. 이 데이터 구조들은 문서 재구조화 프로세스에서 사용될 수 있는 글리프들 간의 연관성을 생성(예컨대, 워드, 텍스트 라인, 단락 등의 생성)하는 한 가지 방법을 설명한다. 그러나, 당업자라면 원시 요소들(예컨대, 글리프들, 그래픽 요소들 등) 간의 연관성을 생성하여 구조적 요소들(예컨대, 단락, 테이블, 합성 그래픽 등)을 정의하는 많은 다른 방법들이 가능하다는 것이 업계에 잘 알려진 만큼 알 수 있다. 다음으로, 섹션 XII는 일부 실시예들의 문서 재구조화 애플리케이션의 소프트웨어 아키텍처를 설명하고, 섹션 XIII는 본 발명의 일부 실시예들을 수행하는 컴퓨터 시스템을 설명한다.
II . 구역 분석
페이지 상에 복수의 기사, 섹션 또는 정보의 카테고리들이 있는 경우, 이들은 종종 라인, 이미지, 또는 모양에 의해 경계가 이루어진다. 사람이 그래픽 단서들이 어떻게 페이지가 구역들로 나뉘는지를 나타내도록 의도되는 방식을 쉽게 식별할 수 있지만, 이는 컴퓨터에 대해서는 단순한 문제가 아니다(특히, 그래픽 원시 요소들의 혼합이 있는 경우, 이들 중 일부는 페이지 콘텐츠로 의도되는 반면 다른 것들은 콘텐츠 구역들의 경계를 나타내는 것으로 의도된다).
본 발명의 일부 실시예들은 비구조화된 문서의 원시 요소들(예컨대, 모양 및 이미지)에 기초하여 경계들 및 이러한 경계들에 의해 경계가 이루어진 영역들(예컨대, 구역들)을 식별하기 위한 방법들을 제공한다. 일부 실시예들에서, 영역들은 문서의 차후 재구조화에서 사용될 뿐만 아니라 추가적인 재구조화 프로세스들의 구획화를 위해서도 사용된다. 일부 실시예들은 콘텐츠로 채워지고 콘텐츠를 콘텐츠가 위치하는 영역과 연관시키는 것을 가능하게 하는 영역 그래프(즉, 계층적 구조 이를 테면 트리)를 생성한다. 일부 실시예들은 페이지 별로 영역 식별을 수행한다.
도 3은 문서의 페이지의 구역들을 식별하고 일부 실시예들에서 페이지에 대한 구역 트리를 생성하기 위한 프로세스(300)를 개념적으로 도시한다. 프로세스(300)가 도 4와 함께 설명된다. 도 4는 일부 실시예들에 따라 문서의 페이지(400)의 구역들의 식별 및 페이지에 대한 구역 트리(430)를 생성하는 시퀀스를 도시한다. 도 3에 도시된 바와 같이, 프로세스(300)는 문서의 페이지를 수신하여(단계 305에서) 시작된다. 일부 경우에서 문서는 여러 페이지들(예컨대, e-북)을 포함하는 반면, 다른 경우에서는 문서는 하나의 페이지만이 될 것이다(예컨대, 광고 전단지).
다음으로, 프로세스는 (단계 310에서) 페이지 상의 구역들을 식별한다. 일부 실시예들에서, 구역들의 식별은 구역 경계들 및 교차점들을 식별하는 것 및 그 다음 구역 경계들을 횡단하여(traversing) 구역들을 식별하는 것을 포함한다. 도 4의 예를 참조하면, 프로세스(300)는 페이지(400)가 5개의 구역들: 구역 A(405), B(410), C(415), D(420), 및 E(425)을 포함한다고 식별한다.
구역들을 식별한 후에, 프로세스(300)는 페이지에 대한 구역 그래프(즉, 계층적 구조 이를테면 트리)를 생성한다(단계 315에서). 구역 그래프는 구역들의 계층구조를 설명한다. 예를 들어, 구역 트리(430)는 페이지에 대한 구역(노드 P)이 네 개의 구역들 A, B, C 및 D를 포함한다고 도시한다. 더욱이, 구역 D는 구역 E를 포함하고, 구역 E는 완전히 구역 D 내에 있다. 일부 실시예들에서, 제1 구역은 제2 구역이 완전히 제1 구역 내에 있는 경우 제2 구역의 부모가 된다. 부모 및 자식은 일부 실시예들에서 하나 이상의 경계들을 공유할 수 있다.
구역 그래프를 생성한 후에, 프로세스(300)는 페이지의 콘텐츠를 (단계 320에서) 구역 그래프로 삽입한다. 그 다음 프로세스는 종료한다. 일부 실시예들에서, 페이지는 텍스트, 그래픽 또는 다른 콘텐츠를 포함한다. 각 특정 콘텐츠 그룹(예컨대, 이미지, 단락, 칼럼 등)이 특정 콘텐츠 그룹을 완전히 포함하는 가장 작은 구역의 자식으로서 놓인다. 일부 실시예들에서, 콘텐츠 객체들의 구역 그래프로의 삽입은 일단 콘텐츠가 추가적으로 분석되었으면(예컨대, 텍스트를 단락, 식별 테이블 등으로 그룹화) 문서 재구조화 프로세스에서 나중에 수행된다. 더욱이, 문서 재구조화가 수행됨에 따라, 일부 실시예들은 구역 그래프를 각 구역에 대한 콘텐츠 서브트리들로 업데이트한다.
A. 용어
도 5는 여러 개의 구역들을 포함하는 문서의 페이지(500)를 도시한다. 페이지(500)는 구역 경계들(505-509)을 포함하는 여러 구역 경계들을 포함한다. 구역 경계들은, 일부 실시예들에서 구역 경계에 기여하는 구역 경계 그래픽에 의해 정의되는 두께를 갖는 수평 또는 수직(즉, 직선으로 된(rectilinear)) 스트립들이다. 구역 경계의 두께는, 일부 실시예들에서 자신의 얇은 방향으로 구역 경계에 기여하는 구역 경계 그래픽의 똑바른(upright) 경계 박스의 폭이다. 일부 실시예들에서, 특정 요소에 대한 똑바른 경계 박스 또는 요소들의 세트는 요소 또는 요소들의 세트를 완전히 감싸는 (분석되고 있는 좌표 시스템 내의) 가장 작은 똑바른 직사각형이다.
구역 경계 그래픽은 좁은 직사각형들이거나 좁은 직사각형을 갖는 똑바른 경계 박스를 갖는 페이지 상의 그래픽 객체들(예컨대, 모양, 이미지, 라인)이다. 예를 들어, 구역 경계들(505-509)은 특정 (상대적으로 얇은) 두께를 갖는 선들이다. 일부 실시예들에서, 구역 경계 그래픽은 상대적으로 좁은 객체들을 포함하는데, 이의 렌더링의 전체 또는 일부는 구역 경계의 전체 또는 일부를 채운다. 일부 실시예들에서, 구역 경계 그래픽은 또한 자신의 경계가 구역 경계에 기여하는 객체들을 포함한다(예컨대, 채워진 다각형의 한쪽은 다각형 자체가 좁지 않고 경계에 맞지 않아도 구역 경계의 전부 또는 일부를 나타낼 수 있다).
그러나, 구역 경계 그래픽은 완전히 직선 또는 완전히 직선으로 둘러싸일 필요가 없다. 예를 들어, 도 6은 구역 경계 그래픽(605)을 포함하는 페이지(600)를 도시한다. 구역 경계 그래픽(605)은 완전히 수직 스트립이 아니다: 대신 이들은 수직에 매우 가깝게 정렬된 가지들의 이미지이다. 일부 실시예들은 그래픽을 구역 경계 그래픽으로 인식하는 반면, 일부 실시예들은 그러하지 아니하다.
도 5의 페이지(500)는 또한 여러 구역 경계 교차점들, 이를테면 교차점들(510 및 511)을 포함한다. 일부 실시예들에서, 구역 경계 교차점은 수평 구역 경계와 수직 구역 경계의 직사각형 교차점이다. 교차점(511)은 구역 경계 교차점이 구역 경계의 끝에 있을 필요가 없음을 도시한다. 구역 경계 중간의 구역 경계 교차점들은 일부 실시예들에서 구역 경계를 하나 이상의 구역 경계 간격들로 나눈다. 예를 들어, 페이지(500)의 하단 구역 경계가 구역 경계 간격들(515, 516, 517, 및 518)로 나뉜다.
따라서, 구역은 일부 실시예들에서 똑바른 직선으로 둘러싸인 모양을 형성하는 구역 경계 간격들의 집합에 의해 경계가 이루어지는 폐쇄 영역이다. 똑바른 직선으로 둘러싸인 모양들은, 이하에 한정되지는 않지만 수평 및 수직 라인 조각들로부터 형성되는 똑바른 직사각형들을 포함하는 수평 및 수직 라인 조각들에 의해 형성될 수 있는 임의의 다각형들이다. 각 구역은 자신의 구역 경계 직사각형들의 바깥쪽으로부터 형성되는 모양인 똑바른 직선으로 둘러싸인 외부 경계를 갖는다. 각 구역은 또한 구역 경계 직사각형들의 내부 측면들로부터 형성되는 모양인 똑바른 직선으로 둘러싸인 내부 경계를 갖는다.
페이지(500)는 구역들 P(526)(페이지 경계), A(520)(왼쪽 및 오른쪽 상의 얇은 스트립들을 포함하는 아치형 모양의 구역 뿐만 아니라 구역들 C 및 D 위의 영역), B(521), C(522)(구역 E와 경계들을 공유하는 왼쪽 구역), D(523)(구역 C의 미러 이미지인 오른쪽 구역), E(524) 및 G(525)를 포함한다. 구역들은 일부 실시예들에서 구역 경계들의 외부 및 내부 측면들에 의해 정의되는 외부 경계들 및 내부 경계들을 갖는다.
도 7은 페이지(500)에 대한 구역 트리(700)를 도시하는데, 구역 P(페이지 경계들)이 구역들 A, C, E, 및 D의 부모이고; 구역 B가 구역 A의 자식이며; 구역 G가 구역 D의 자식이다. 구역 B, E 및 G는 섬들의 예이다. 섬은 경계 간격(border interval)을 부모 구역과 공유하지 않는 구역이다. 구역 E는 이의 경계 간격들을 구역들 C 및 D와 공유하지만, 이 구역들 중 어느 것도 실제로 구역 E를 포함하지 않기 때문에, 이의 이들 중 어느 것도 구역 E의 부모가 아니다. 구역 트리는 또한 노드들이 이들이 포함하는 콘텐츠에 의해 채워졌다는 것을 보여준다. 일부 실시예들에서, 각 페이지에 대한 문서 객체 모델(document object model; DOM)의 일부가 페이지의 구역 트리의 노드들 상에 만들어진다. 문서 객체 모델은 문서를 자신의 노드들이 객체들인 그래프로 나타내는 것이다. 일부 실시예들에서, 이 그래프는 트리이고, 이의 잎 노드들은 원시 요소들을 나타내며, 이의 잎이 아닌 노드들은 자신의 자식 노드들 간의 관계 뿐만 아니라 이 자식 노드들이 그룹으로서 갖고 있는 속성들을 나타내는 구조 객체들이다. 일부 실시예들에서, 노드의 자식들의 순서는 이 자식들의 읽기 순서를 나타낸다. 일부 실시예들에서, 루트 노드는 문서 노드이고, 이의 자식들은 페이지 노드들이고, 구역 트리는 각 페이지 노드로부터 내려오고, (테이블, 텍스트 박스, 레이아웃, 칼럼, 단락, 목록, 및 텍스트 라인과 같은 구조들을 나타내는 노드들을 포함하는) 흐름 트리는 구역 노드들의 일부로부터 내려오며, 원시 요소들(이를 테면 글리프, 모양 및 이미지)을 나타내는 노드들이 흐름 트리 내의 노드들의 일부의 자식들이다. 일부 실시예들에서, 구조 노드들은 트리의 부모-자식 관계(이것이 향하는 그래프 가장자리들)에 의해 표현되는 관계에 더하여 노드들 간의 관계를 나타내는 속성들을 포함한다. 예를 들어, 새로운 칼럼을 시작하는 단락은 이전 칼럼을 마치는 단락의 연속이 될 수 있는데, 이 둘 간의 단락 중단 없이 연속이 될 수 있다. 이 경우, 트리 내의 두 단락 노드들이 있고, 각각은 상이한 칼럼 노드 부모를 갖지만, 이들은 서로에 대해 지시하는 속성들을 가져 이들이 단일, 공통 단락의 부분들을 나타내는 두 노드임을 나타낸다. 일부 실시예들에서, DOM은 문서의 모든 구조적 요소들을 포함하는 문서의 계층적 표현이다. 일부 실시예들은 콘텐츠가 특정 구역의 외부 경계 내에 완전에 위치하고 특정 구역의 임의의 자식의 외부 경계 내에 완전히 위치하지 않는 경우 특정 구역의 자식으로 되도록 정의한다. 이에 따라, 구역 B는 헤더 텍스트를 포함하고, 구역들 C 및 D는 표준 텍스트를 포함하며, 구역들 E 및 G는 이미지들을 포함한다.
B. 회전 그룹들
일부 실시예들은 페이지 상의 여러 회전 그룹들을 정의하고 각 회전 그룹의 구역들 및 콘텐츠를 별도로 분석한다. 일부 실시예들에서, 회전 그룹들은 이들이 임의의 구역 경계들을 갖지 않는 점을 제외하고는 구역들과 유사하다. 대신, 회전 그룹은 동일한 각도(또는 사람이 구별하기에 어려울 정도로 충분히 작은 특정 임계값 내의 거의 동일한 각도)만큼 회전된 모든 콘텐츠를 포함하도록 정의된다. 도 8은 페이지 상의 회전 그룹들을 정의하기 위한 일부 실시예들의 프로세스(800)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스(800)는 (단계 805에서) 문서의 페이지를 수신한다. 일부 경우에서, 페이지는 문서의 유일한 페이지인 반면, 다른 경우에서 페이지는 복수의 페이지들 중 하나이다. 일부 실시예들은 페이지 별로 하기 보다는 한 번에 복수의 페이지 문서(또는 복수의 페이지 섹션)에 대해 회전 그룹 분석을 수행한다.
프로세스는 그 다음 (단계 810에서) 페이지 상의 각 물체의 회전 각도를 결정한다. 일부 실시예들에서, 불규칙적으로 모양이 이루어진 이미지들은 0의 회전 각도를 갖는 것으로 가정된다. 예를 들어, 페이지(500)의 구역 E 내의 이미지는 불규칙적으로 모양이 이루어지고, 0이 아닌 회전 각도가 주어지지 않는다. 수평으로 정렬된 텍스트는 또한 0의 회전 각도를 갖는 반면, x-축에 떨어져 정렬된 텍스트는 회전 각도가 주어진다. 예를 들어, 페이지(500)의 구역 F(530) 내의 텍스트는 약 -45 도의 회전 각도를 갖는다. 마찬가지로, 페이지(600) 내의 텍스트(610)("유기" 및 "순수")는 자신의 회전 각도를 갖는다. 그래픽 객체들을 회전 그룹들에 또한 위치시키는 실시예들에서, 텍스트(610) 위의 직사각형 이미지(615)는 텍스트(610)와 동일한 회전 각도를 갖는다.
다음으로, 프로세스(800)는 (단계 815에서) 회전 각도로 객체들을 정렬시킨다. 프로세스는 그 다음 (단계 820에서) 객체들을 특정 임계값 아래의 회전 각도 내의 스프레드(spread)를 갖는 클러스터들로 그룹화한다. 일부 실시예들에서, 특정 임계값과 비교되는 스프레드는 그룹 내의 가장 큰 회전 각도로부터 감해지는 그룹 내의 가장 작은 회전 각도이다. 0이 아닌 임계값의 사용은 그룹이 최초에 수신된 문서 내의 콘텐츠 정의 내의 미러 오류들을 해결할 수 있도록 한다(예컨대, 수평에서 아주 조금 떨어진 텍스트 라인).
프로세스(800)는 그 다음 (단계 825에서) 각 회전 그룹을 별도로 분석한다. 프로세스는 그 다음 종료한다. 대부분의 페이지 상에서, 분석의 대부분은 똑바른 (0의 각도) 그룹을 수반할 것이다. 일부 실시예들은 똑바른 그룹과는 다른 그룹들에 대한 구역 분석을 수행하지 않고, 대신에 단순히 회전된 그룹들의 콘텐츠를 전체로서 페이지의 자식들로 분류한다. 일부 실시예들에서, 각 회전 그룹은 좌표 시스템을 갖는데 이 시스템에서 이의 콘텐츠는 똑바르게 나타난다. 이러한 실시예들에서, 각 회전 그룹은 문서에 대한 DOM에 알맞은 콘텐츠를 갖는 자신의 구역 트리를 갖는다. 일부 실시예들은 페이지 상의 콘텐츠가 회전되는 각 구분가능한 각도에 대해 하나의 회전 그룹을 정의한다. 각 그룹 상의 분석이 아래에서 자세히 설명된다.
C. 구역 경계들 및 교차점들의 식별
도 9는 구역 경계들 및 교차점들을 식별하기 위한 일부 실시예들의 프로세스(900)를 개념적으로 도시한다. 프로세스(900)는 도 10과 함께 설명된다. 도 10은 다양한 그래픽 및 텍스트를 포함하는 페이지(1000)를 도시한다.
도 9에 도시된 바와 같이, 프로세스는 회전 그룹을 (단계 900에서) 수신하고 이 그룹을 똑바른 좌표 시스템으로 정규화한다. 일부 실시예들에서, 이 그룹을 똑바른 좌표 시스템으로 정규화하는 것은 그룹 내의 모든 객체들이 수직 또는 수평(예컨대, 텍스트 라인들이 좌표 시스템 내에서 수평)이 되도록 그룹에 대한 좌표 시스템을 정의하는 것을 수반한다. 다음의 설명은 회전 그룹이 똑바른(0의 각도) 그룹임을 가정한다. 당업자라면 동일한 기술들을 콘텐츠가 똑바르게 나타나는 좌표 시스템에서 0이 아닌 각도를 갖는 회전 그룹들에 대해 적용할 수 있다. 일부 실시예들은 특정 회전 그룹에 대한 구역 식별을 수행하기 전에 다른 회전 그룹들로부터의 콘텐츠를 제거한다. 예를 들어, 일부 실시예들은 똑바른 직선으로 둘러싸인 좌표 시스템에서 구역 식별 및 분석을 수행하기 전에 도 6의 페이지(600)로부터 텍스트(610) 및 이미지(615)를 제거한다.
프로세스는 그 다음 (단계 910에서) 잠재적인 구역 경계들을 식별한다. 잠재적 구역 경계들은 일부 실시예들에서 충분히 좁은 임의의 수평 또는 수직 그래픽 객체를 포함한다. 특정 그래픽 객체가 충분히 좁은지의 결정은 일부 실시예들에서 절대적 측정을 사용한다(예를 들어, 그래픽 객체의 똑바른 경계 직사각형의 더 작은 차원은 1/24 인치보다 작다). 다른 실시예들에서, 이 결정은 상대적 측정(예컨대, 똑바른 경계 직사각형의 더 큰 차원이 더 작은 차원의 크기의 8배임), 또는 절대 및 상대 측정들의 조합(예컨대, 좁은 차원이 일 인치의 1/12까지 되도록 할 수 있지만, 8:1의 상대적 측정이 적용됨)을 사용한다. 일부 실시예들은 페이지의 크기에 대한 임계값을 조정한다. 예를 들어, 위의 예들은 표준 8.5 X 11 인치 페이지에 적용될 수 있는 반면, 훨씬 큰 페이지는 더 큰 잠재적 구역 경계들을 가질 수 있다.
도 10을 참조하면, 페이지(1000)는 잠재적 구역 경계들: 수직 경계들(1005-1010) 및 수평 경계들(1011-1016)로 분류되는 여러 라인들을 포함한다. 그러나, 그래픽 객체(1020)는 x 방향에서 너무 두껍기 때문에 일반적으로 잠재적 구역 경계로 고려되지 않는다.
일부 실시예들은 또한 적어도 임계 크기를 갖는 모든 똑바른 직선으로 둘러싸인 모양들을 식별하고 이 모양들의 측면들을 잠재적 구역 경계들로 사용한다. 일부 실시예들에서, 임계값 크기는 특정 영역인 반면, 일부 다른 실시예들에서 임계 폭 및 임계 높이는 넘어서야 한다. 예를 들어, 객체(1020)는 이의 경계들이 잠재적 구역 경계들로 만족하도록 충분히 큰 영역을 가질 수 있지만, 이는 별도의 구역이 되기에는 너무 좁다. 반면, 별 객체(1025)는 똑바른 직선으로 둘러싸인 모양이 아니고, 이에 따라 이의 가장자리들을 구역 경계로서 만족되지 않는다. 이에 따라, 이 객체들은 단순히 하나의 구역 또는 다른 구역 내에 있는 콘텐츠로서 분류된다(구체적으로, 그래픽 객체들). 일부 실시예들은 똑바른 직선으로 둘러싸인 모양의 측면으로 식별된 각 잠재적 구역 경계의 경계들을, 스트로크되면 스트로크 폭을 포함하는 이 측면에 경계를 이루는 똑바른 직사각형으로 설정한다. 일부 실시예들은 또한 페이지 경계들이 회전 그룹의 좌표 시스템 내에서 똑바른 직선으로 둘러싸인 것이라면 이 페이지 경계들을 구역 경계들로 포함한다.
잠재적 구역 경계들을 식별한 후, 프로세스(900)는 페이지 상의 다른 객체들과 교차하는 경계들 또는 경계들의 부분들을 (단계 915에서) 제거한다. 예를 들어, 잠재적 경계(1015)는 별 객체(1025)에 의해 희미해지고, 이에 따라 두 잠재적 구역 경계들(별 위의 영역 및 별 아래의 영역)로 나뉜다. 일부 실시예들은 또한 문자 경계 박스들을 교차하는 구역 경계들을 제거한다. 일부 실시예들에서 특정 문자에 대한 문자 경계 박스는 완전히 문자를 감싸는 가장 작은 직사각형이다. 예를 들어, 잠재적 구역 경계(1010)는 문자들 "Lorem Ipsum"을 교차한다. 이에 따라, 일부 실시예들은 고려 대상에서 잠재적 구역 경계(1010)을 제거한다.
다음으로, 프로세스(900)는 (단계 920)에서 경계들을 병합한다. 일부 실시예들은 평행이고 중첩하거나 중첩하는 것에 가까운 경계들을 병합한다. 경계들은 이들의 경계가 교차하는 경우 겹친다. 예를 들어, 두 개의 매우 좁은 상이한 두께의 직사각형들은 하나가 완전히 다른 것을 감싸도록 그려지는 경우, 두 잠재적 구역 경계들이 병합된다. 일부 실시예들은 (잠재적 구역 경계들의 폭 및 길이 면에서) 경계들을 약간 확장하여 중첩을 테스트한다. 따라서, 도 10 내의 경계들(1013 및 1014)은 하나의 구역 경계(1027)로 병합되는데, 두께는 경계들(1013 및 1014)의 두께보다 크게 된다.
프로세스(900)는 그 다음 임의의 병합된 경계들이 프로세싱되지 않은 채로 남아있는지 여부를 판단한다(단계 923에서). 어떠한 경계들도 병합되지 않거나, 모든 병합된 경계들이 프로세싱된 경우, 프로세스는 아래에서 설명되는 단계 945로 진행한다. 그렇지 않으면, 프로세스는 (단계 925에서) 프로세싱되지 않은 병합된 경계를 선택한다. 프로세스는 그 다음 병합된 경계가 너무 두껍거나 너무 많은 구역 경계 그래픽을 포함하는지를 (단계 930에서) 판단한다. 일부 실시예들에서, 좁은 방향으로의 이의 두께가 특정 임계값보다 큰 경우, 병합된 경계는 너무 두껍다. 일부 실시예들에서, 두께에 대한 테스트는 그래픽 객체가 최초에 구역 경계로 분류될 만큼 충분히 좁은지 여부와 동일하다. 프로세스가 경계가 너무 두껍지 않다고 판단하는 경우, 프로세스는 위에서 설명된 단계 923으로 진행한다. 그렇지 않고, 병합된 경계가 너무 두꺼운 경우, 프로세스는 (단계 935에서) 잠재적 구역 경계 후보들로부터 병합된 경계를 제거하고 이를 단일 그래픽 객체로 분류하며, 그 다음 단계 923으로 진행한다. 예를 들어, 이는 이미지가 일련의 좁은 직사각형들로 그려지거나 바 그래프(bar graph)가 좁고 간격이 좁은 바들로 그려지는 경우 발생한다.
일단 모든 병합된 경계들이 검사되면, 프로세스는 (단계 945에서) 구역 경계 교차점들을 식별한다. 위에서 설명된 바와 같이, 구역 경계 교차점들은 수평 경계가 수직 경계를 교차하는 곳에서마다 식별된다. 일부 실시예들은 또한 유사-교차점들(near-intersections)을 식별하고 이들을 교차점들로 분류한다. 유사-교차점들을 찾기 위해, 경계들은 작은 양만큼 확장되고 그 다음 교차점에 대해 테스트된다. 일부 실시예들은 경계들을 고정된 양(예컨대, 1인치의 4분의 1)만큼 확장시키는 반면, 다른 실시예들은 각 경계들을 특정 구역 경계의 길이의 일 퍼센트만큼 각 경계들을 확장시킨다. 길이가 늘어난 경계들이 교차하는 경우, 유사-교차점은 교차점으로 분류되고 두 경계들은 상대방의 두께를 완전히 교차하도록 확장된다. 예로서, 도 10의 경계들(1027 및 1008)은 완전히 교차하지 않는다. 그러나, 이들은 충분히 가까워서 이들은 교차하는 것으로 분류되고 이들이 교차하도록 확장된다.
프로세스는 그 다음 (단계 950에서) 둘보다 적은 교차점을 갖는 경계들을 제거한다. 일단 경계가 제거되면, 제거된 경계와 교차한 임의의 경계들은 이들이 여전히 적어도 두 교차점을 갖는지 여부를 판단하도록 다시 테스트되어야 한다. 페이지(1000) 예에서, 경계(1006) 및 경계(1015)의 두 나머지 부분들은 구역 경계 교차점들을 갖지 않기 때문에 제거된다. 일단 구역 경계들 및 교차점들이 식별되면, 프로세스는 (단계 955)에서 구역 경계들을 다듬어 가장 밖의 교차점들을 통과하도록 확장하는 임의의 부분들을 제거한다. 예를 들어, 경계들(1027 및 1009)은 이들의 교차점을 통과하도록 확장된다. 이들은 서로의 가장 밖의 경계까지만 확장되도록 다듬어진다. 경계들을 다듬은 후에, 프로세스는 (단계 960에서) 차후 사용을 위한(예컨대, 구역들을 식별하기 위한) 구역 경계 및 교차점 정보를 저장한다. 그 다음 프로세스는 종료된다.
이제, 구역 경계 간격들 및 구역 경계 교차점들이 모두 결정되었다. 도 11은 수직 구역 경계 간격들(1105, 1115, 1125, 1135, 1145, 1155, 1165 및 1175) 뿐만 아니라 수평 구역 경계 간격들(1110, 1120, 1130, 1140, 1150, 1160, 1170 및 1180)을 도시한다. 도 11은 또한 구역 경계 교차점들(1102, 1112, 1113, 1122, 1123, 1132, 1133, 1142, 1143, 1152, 1162, 1172, 1182 및 1192)을 도시한다.
D. 구역들의 식별
구역 경계들 및 구역 경계 교차점들이 식별되면, 구역들이 식별될 수 있다. 도 12는 구역들을 식별하기 위한 일부 실시예들의 프로세스(1200)를 개념적으로 도시한다. 프로세스(1200)가 도 13 및 14와 함께 설명된다. 도 13 및 14는 페이지(1000)의 구역들을 식별하는 프로세스(1200)의 애플리케이션을 도시한다. 도면들 각각은 시퀀스로 도시된다. 도 13은 제1 구역 경계를 식별하는 시퀀스(1305-1330)를 도시한다. 도 13의 화살표들은 방향 벡터들을 도시하고 점선들은 구역을 정의하는 구역 경계 간격들을 통하여 이루어진 경로를 도시한다. 도 14는 프로세스(1200)에 의해 식별된 구역들을 도시한다.
도 12에 도시된 바와 같이, 프로세스(1200)는 (단계 1205에서) 그룹 또는 페이지에 대한 구역 경계들 및 교차점들을 수신한다. 일부 실시예들에서, 구역 경계들 및 교차점들은 위에서 설명된 프로세스(900)의 출력이다. 프로세스는 그 다음 (단계 1207에서) 임의의 구역 경계 간격들이 있는지 여부를 판단한다. 없는 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 1210에서) 두 방향 벡터를 각 구역 경계 간격으로 지정한다(즉, 수평 간격들은 오른쪽 및 왼쪽을 지시하는 벡터들을 갖고, 수직 간격들은 위아래를 지시하는 벡터들을 갖는다). 도 13은 (시퀀스 1305에서) 페이지(1000)에 대한 경계 간격들 각각이 두 방향으로 방향 벡터로 시작하는 것을 도시한다.
다음으로, 프로세스는 (단계 1215에서) 경계 간격 b, 교차점 i, 및 방향 d를 선택한다. 일부 실시예들은 시작 지점을 랜덤으로 선택하는 반면, 다른 실시예들은 특정 방향의 위 및 가장 왼쪽의 교차점과 같은 휴리스틱(heuristic)을 이용한다. 도 13은 (단계 1305에서) 간격(1115)를 따라 위로 움직이는 교차점(1182)에서 시작하는 임의의 선택을 도시한다. 프로세스(1200)는 그 다음 (단계 1220에서) 교차점에 도달할 때까지 교차점 i로부터 방향 d로 진행한다.
일단 교차점에 도달하면, 프로세스는 (단계 1225에서) 교차점이 단계 1215에서 선택된 시작 교차점인지 여부를 판단한다. 교차점이 원래의 시작 교차점인 경우, 프로세스는 아래에서 설명되는 단계 1265로 진행한다. 그렇지 않으면, 프로세스는 (단계 1230에서) 구역 경계 간격들을 통하는 경로가 교차점에서 시계방향으로 돌아갈 수 있는지 여부를 판단한다. 경로가 시계방향으로 돌아갈 수 있는 경우, 경로는 (단계 1235에서) 그렇게 한다. 프로세스는 그 다음 아래에서 설명되는 단계 1255로 진행한다. 경로가 시계방향으로 돌지 못하는 경우 프로세스는 (단계 1240에서) 경로가 교차점으로 통하여 계속하여 직선일 수 있는지 여부를 판단한다. 경로가 계속하여 직선일 수 있는 경우, 경로는 그렇게 된다(단계 1245). 프로세스는 그 다음 아래에서 설명되는 단계 1255로 진행한다. 경로가 계속하여 직선일 수 없는 경우, 경로는 (단계 1250에서) 반시계방향으로 돌아서 다음 경계 간격으로 넘어간다. 단계들(1230 및 1240)에서 이루어진 선택들에 의해, 프로세스(1200)는 각 경계 교차점에서 시계방향 회전에 대한 선호를 나타낸다. 일부 실시예들은 대신 반시계방향 회전에 대한 선호를 나타내는데, 이는 동일한 결과를 가져온다.
프로세스는 (단계 1255에서) 신규 경계 간격을 현재 경계 간격 b로 설정하고, 신규 교차점을 현재 교차점 i로 설정한다. 프로세스는 그 다음 (단계 1260에서) 방향 d를 경계 b를 따라 교차점 i로부터 멀어지도록 설정한다. 프로세스는 그 다음 위에서 설명된 단계 1220으로 진행한다.
일단 본래 교차점에 도달하면, 프로세스(1200)는 (단계 1265에서) 구역 Z를 단계 1215 후 횡단된 경계 간격들의 세트로 정의한다. 위에서 게시된 바와 같이, 도 13은 프로세스(1200)에 따른 구역 경계 간격들의 세트의 횡단을 도시한다. 단계 1305에서, 교차점(1182)로부터 올라와 움직여 시작하는 (도면에서 원 및 짧은 화살표로 나타남) 간격(1145)를 선택한 후, 경로는 교차점(1112)에 다다른다. 시계방향으로 회전하는 것이 옵션이고, 따라서 경로는 (단계 1310에서) 간격(1120)으로 회전하고, 그 다음 교차점(1122)에서 다시 시계방향으로 간격(1155)로 회전한다. 경로는 (단계 1315에서) 다시 교차점(1132)에서 시계방향으로 간격(1150)으로 회전하지만, 그 다음 교차점(1142)에서 시계방향으로 회전할 수 없고 직선으로 계속될 수 없다. 대신, 경로는 반시계방향으로 간격(1145)으로 회전하는데, 그 다음 교차점(1152)에서 다시 간격(1160)으로 회전하여 교차점(1162)으로 진행한다. 교차점(1162)에서, 경로는 (단계 1320에서) 시계 방향으로 간격(1175)으로 회전하고, 그 다음 교차점(1172)에서 다시 시계방향으로 간격(1180)으로 회전한다. 간격(1180)은 원래의 교차점(1182)으로의 경로로 돌아간다.
도 13은 간격들(1115, 1120, 1155, 1150, 1145, 1160, 1175 및 1180)의 횡단(traversal) 뿐만 아니라 이 횡단에 사용되는 방향 벡터들에 의해 정의되는 구역(1300)을 도시한다(단계 1325에서). 프로세스(1200)로 돌아가서, 구역 Z를 (단계 1265에서) 정의한 후, 프로세스는 (단계 1270)에서 구역 Z를 횡단하는데 사용되는 방향 벡터들을 제거한다. 도 13은 (단계 1330에서) 제거된 구역(1300)을 횡단하는데 사용되는 방향 벡터들로 페이지(1000)의 구역 경계 간격들을 도시한다.
프로세스(1200)는 다음 (단계 1275에서) 남아있는 방향 벡터가 없는 모든 경계 간격들을 제거한다. 이는 제1 구역이 식별된 후에는 발생되지 않지만, 임의의 추가적인 구역들이 식별된 후에 발생할 수 있다. 구역 Z가 섬(즉, 자신의 부모와 경계들을 공유하지 않는 구역)인 경우, 프로세스(1200)는 이에 따라 구역을 (단계 1280에서) 분류한다. 선호가 시계방향 회전인 것인 실시예들에서, 반시계 방향으로 자신의 중심을 횡단하여 정의되는 구역은 섬이 된다.
프로세스는 그 다음 (단계 1285에서) 임의의 구역 경계 간격들이 남아있는지 여부를 판단한다. 더 많은 구역 경계 간격들이 남아 있는 경우, 프로세스는 위에서 설명된 단계 1215로 진행한다. 그렇지 않고, 모든 구역 경계 간격들이 양 방향으로 사용되면, 프로세스는 페이지에 대한 모든 구역들을 정의한다. 프로세스는 그 다음 (단계 1290에서) 구역 정보를 저장한다. 프로세스는 그 다음 종료된다.
도 14는 페이지(1000)에 적용되는 프로세스(1200)의 계속을 도시한다. 간단히 하기 위해, 도 14는 구역 경계 간격들의 횡단을 통한 모든 움직임을 도시하지 않는다. 우선, 교차점들(1113, 1123, 1133 및 1143) 중 임의의 지점에서 시작하여, 두 구역들(1435 및 1440)이 식별된다. 이 구역들은 서로의 복제이고, 섬이 아닌 자식을 갖지 않는 섬들의 경우에 발생할 것이다. 일부 실시예들은 복제 구역들을 제거한다. 그러나, 다른 실시예들은 이 구역들을 둘로 취급한다: 하나는 정규 구역이고, 다른 하나는 섬이다. 다음으로, 교차점(1192)에서 시작하는 것은 구역(1445)(페이지 경계들)을 가져오는데, 페이지 경계들의 모든 가능한 턴오프가 반시계 방향 움직임이기 때문이다. 마지막으로, 이는 구역들(1450 및 1455)을 남기는데, 이들은 횡단되고 제거된다. 일단 모든 구역들이 횡단되면, 남아 있는 구역 경계 간격들이 없게 된다.
E. 구역 트리 생성
일단 구역들이 식별되면, 구역 그래프(구역 트리)가 생성된다. 일부 실시예들에서, 구역 트리가 구역 별로 이루어지는 문서 재구조화에 사용된다. 도 15는 구역 트리를 생성하기 위한 일부 실시예들의 프로세스(1500)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 1505에서) 구역들 및 콘텐츠 객체들을 수신한다. 일부 실시예들에서, 이러한 구역들은 프로세스 이를 테면 프로세스(1200)에 의해 식별되었다. 프로세스는 그 다음 (단계 1510에서) 면적으로 구역들을 정렬시킨다. 일부 실시예들은 구역들을 정렬시키기 위해 섬과 섬이 아닌 것의 면적이 동일한 경우 섬이 섬이 아닌 것보다 더 큰 것으로 취급한다.
다음으로, 프로세스는 (단계 1515에서) 가장 작은 구역을 z로 선택한다. 프로세스는 그 다음 (단계 1520에서) 구역 z가 페이지에 대한 구역 그래프 내에 아직 노드를 갖고 있는지 여부를 판단한다. z가 노드를 갖는 경우, 프로세스는 아래에서 설명되는 단계 1530으로 진행한다. 그렇지 않고, z가 아직 노드를 갖고 있지 않으면, 프로세스(1500)는 (단계 1525에서) 노드를 구역 z로 정의한다.
다음으로, 프로세스는 (단계 1530에서) 다음 가장 작은 구역을 구역 p로 선택한다. 프로세스는 그 다음 (단계 1535에서) 구역 p가 구역 z를 포함하는지 여부를 판단한다(즉, 구역 z의 외부 경계들이 완전히 구역 p의 외부 경계들 내에 있는지 여부를 판단). 구역 p가 구역 z를 포함하는 경우, 프로세스는 (단계 1540에서) 구역 z는 구역 p의 자식이라고 판단한다. 이에 기초하여, 프로세스는 (단계 1545에서) 노드 그래프 내의 구역 p에 대한 노드를 정의한다. 프로세스는 그 다음 (단계 1550에서) 구역 p로부터 구역 z로의 가장자리를 정의한다. 프로세스는 그 다음 아래에서 설명되는 단계 1565로 진행한다.
단계 1535에서 프로세스는 구역 p가 구역 z를 포함하지 않는다고 판단하는 경우, 프로세스는 (단계 1555에서) 현재 구역 p보다 큰 임의의 구역들이 있는지 여부를 판단한다. 남아있는 더 큰 구역이 있는 경우, 프로세스는 단계(1530)로 진행하고 다음으로 가장 작은 구역을 구역 p로 선택하여 새로운 구역 p가 구역 z의 부모인지 여부를 테스트한다. 그렇지 않고, 구역 p보다 큰 구역들이 없는 경우, 프로세스는 (단계 1560에서) 구역 z가 부모 구역들을 갖지 않는다고 판단한다.
다음으로, 프로세스는 구역 z보다 큰 구역들이 있는지 여부를 판단한다(단계 1565에서). 더 큰 구역들이 있는 경우, 프로세스는 (단계 1570에서) 선택할 구역들의 세트로부터 구역 z를 제거하고 단계 1515로 진행하여 부모-자식 분석을 위한 또 다른 구역을 선택한다.
도 16은 크기 순서로 정렬되고 노드 그래프(1600)로 놓인 페이지(1000)(도 10에 도시됨)의 구역들 1435(A), 1440(A'), 1455(B), 1450(C), 1300(D), 및 1445(E)를 도시한다(A'는 A에 대한 섬임). 프로세스(1500)를 이용하여, 우선 구역 A(가장 작은 구역)에 대한 노드가 정의되면, 구역들은 섬 구역 A'이 구역 A의 부모라고 판단할 때까지 테스트되고, 여기서 구역 A는 노드 그래프로 정의되고, A'로부터 A로의 가장자리가 정의된다. 그 다음, 구역 D는 섬 구역 A'의 부모로 결정되고, 그 다음 구역들 B, C, 및 D는 부모를 갖지 않는 섬 구역 E의 자식으로 모두 결정된다. 일부 실시예들에서, 구역들의 레벨들 및 섬 구역들은 항상 구역 그래프에서 벌갈아 발생한다. 따라서, 섬들 E 및 A'는 그래프(1600)의 제1 및 제3 레벨에 있고, 구역들 B, C, D 및 A는 제2 및 제4 레벨에 있다.
모든 구역들이 분석되면, 프로세스는 단계(1573)로 진행하고 프로세싱되지 않은 콘텐츠 객체들이 있는지 여부를 판단한다. 콘텐츠 객체들이 없는 경우(즉, 문서가 구역 경계들을 제외하고는 비어있는 경우), 또는 모든 콘텐츠 객체들이 프로세싱된 경우, 프로세스는 아래에서 설명된 단계(1597)로 진행한다. 그렇지 않으면, 프로세스는 단계(1575)로 진행하고 콘텐츠 객체 c를 선택한다. 프로세스는 그 다음 (단계 1580에서) 객체 c에 대한 노드를 정의한다. 일부 실시예들에서, 콘텐츠 객체는 원시 객체(예컨대, 글리프, 모양 또는 이미지)이다. 프로세스는 그 다음 (단계 1585에서) 콘텐츠 객체 c를 포함하는 가장 작은 구역 x를 결정한다. 일단 콘텐츠 객체 c를 포함하는 구역 x가 결정되면, 프로세스는 (단계 1590에서) 구역 x로부터 콘텐츠 객체 c로의 구역 그래프 내의 가장자리를 정의한다. 모든 객체들이 추가된 경우, 프로세스는 (단계 1597에서) 구역 그래프를 저장한다. 프로세스는 그 다음 종료된다.
일부 실시예들에서, 각 구역 내의 콘텐츠가 추가적으로 분석된다(예컨대, 텍스트의 단락으로의 그룹화, 테이블들의 식별 등). 더욱이 문서 재구조화가 수행됨에 따라, 일부 실시예들은 구역 그래프를 각 구역에 대한 콘텐츠 서브트리들로 업데이트하는데, 여기서 이 콘텐츠 서브트리들은 구역의 원시 객체들의 계층적 그룹화를 나타내는 구조적 노드들을 포함한다. 구역 분석을 우선 실시하여, 상이한 구역들로부터의 콘텐츠가 차후 문서 재구조화 단계들에서 부적절하게 그룹화되지 않도록 보장한다.
일부 실시예들에서, 경계들과 같은 기하학적 속성들 및 이러한 경계들에 의해 경계가 이루어진 영역들(예컨대, 구역들)의 식별은 추가적인 문서 재구조화에 대한 스테이지를 설정한다. 예를 들어, 프로파일들이 구역 기하 구조에 종속할 수 있고 구조 요소들 이를 테면 테이블 또는 텍스트 박스가 구역 기하 구조로부터 인식될 수 있다.
F. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명된 구역 분석 프로세스들은 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 다른 헨드헬드 또는 리소스 제한 장치들(또는 컴퓨터 판독가능 매체에 저장된 것) 상에서 실행되는 소프트웨어로 실행된다. 도 17은 문서에 구역 분석을 수행하기 위한 일부 실시예들의 구역 분석 애플리케이션(1700)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션(예컨대, 문서 재구조화 애플리케이션)에 통합되는 반면, 다른 실시예들에서 애플리케이션은 운영 체제(operating system) 내에서 실행될 수 있다.
구역 분석 애플리케이션(1700)은 경계 식별 모듈(1705), 간격 및 교차점 식별 모듈(1710), 구역 식별 모듈(1715), 및 구역 그래프 빌더(1720) 뿐만 아니라 구역 정보 저장소(1725)를 포함한다.
도 17은 문서 콘텐츠(1730)를 또한 도시한다. 경계 식별 모듈(1705)은 문서 콘텐츠(1730)로부터 정보를 수신한다. 일부 실시예들에서, 이 정보는 문서 내의 모든 그래픽(예컨대, 모양, 이미지, 라인 등)에 대한 정보이다. 구역 식별 모듈(1705)은 잠재적 구역 경계들을 식별하고 이 정보를 간격 및 교차점 식별 모듈(1710) 뿐만 아니라 구역 정보 저장소(1725)로 전달한다. 일부 실시예들에서, 경계 식별 모듈(1705)은 프로세스(900)의 일부 또는 전부를 수행한다.
간격 및 교차점 식별 모듈(1710)은 구역 식별 모듈(1705) 및/또는 구역 정보 저장소(1725)로부터 구역 경계 정보를 수신한다. 간격 및 교차점 식별 모듈(1710)은 모듈(1705)에 의해 식별되는 잠재적 구역 경계들에 기초하여 구역 경계 교차점 및 구역 경계 간격들을 식별한다. 식별된 구역 경계 교차점들 및 구역 경계 간격들은 구역 식별 모듈(1715)로 전달될 뿐만 아니라 구역 정보 저장소(1725)에 저장된다. 일부 실시예들에서, 간격 및 교차점 모듈 식별(1710)은 프로세스(900)의 일부 또는 전부를 수행한다.
구역 식별 모듈(1715)은 구역 식별 모듈(1705)로부터 구역 경계 정보를 수신하고, 간격 및 교차점 식별 모듈(1710)로부터 구역 경계 교차점 및 구역 경계 간격 정보를 수신하며 및/또는 구역 정보 저장소(1725)로부터 정보를 수신한다. 구역 식별 모듈(1715)은 모듈들(1705 및 1715)로부터의 정보에 기초하여 구역들을 식별한다. 식별된 구역들은 구역 그래프 빌더로 전달될 뿐만 아니라 구역 정보 저장소(1725)에 저장된다. 일부 실시예들에서, 구역 식별 모듈(1715)은 프로세스(1200)의 일부 또는 전부를 수행한다.
구역 그래프 빌더(1720) 모듈은 구역 식별 모듈(1715) 및/또는 구역 정보 저장소(1725)로부터 구역 정보를 수신할 뿐만 아니라 문서 콘텐츠(1730)로부터 콘텐츠 정보를 수신한다. 구역 그래프 빌더(1720)는 구역 정보에 기초하여 문서에 대한 구역 그래프를 정의하고, 구역 그래프를 콘텐츠 정보로 채운다. 일부 실시예들에서, 구역 그래프 빌더(1720)는 콘텐츠 정보가 아래의 섹션들에서 설명된 것과 같은 다른 재구조화 프로세스들에 의해 식별됨에 따라 구역 그래프를 채운다. 일부 실시예들에서, 구역 그래프 빌더(1720)는 프로세스(1500)의 일부 또는 전부를 수행한다.
일부 실시예들에서, 위에서 설명된 모듈들 또는 다른 모듈들에 의해 수행되는 프로세스들의 결과들이 전자 저장소(예컨대, 문서 객체 모델의 일부로서)에 저장된다. 문서 객체 모델은 그 다음 사용자가 문서를 리뷰 및/또는 이와 상호작용할 수 있도록(예컨대, 터치 스크린, 커서 제어 장치 등을 통해) 전자 디스플레이 장치(예컨대, 핸드헬드 장치, 컴퓨터 스크린 등) 상에 문서를 디스플레이하는데 사용될 수 있다.
III . 가이드 및 여백 분석
본 발명의 일부 실시예들은 문서 또는 문서의 부분 내의 경계들(예컨대, 정렬 가이드들) 및 채워지지 않은 공간(예컨대, 글리프들의 그룹들 간의 채워지지 않은 흰 공간의 틈, 여백이라고 함)과 같은 기하학적 속성들을 식별하기 위한 방법들을 제공한다. 일부 실시예들에서, 여백은 두 정렬 포인트들 간의(예컨대, 오른쪽 정렬 포인트 및 왼쪽 정렬 포인트 간의) 흰 공간이다. 가이드들 및 여백들의 식별은 일부 실시예들에서 차후 재구조화 절차들, 이를테면 칼럼 식별 및 텍스트 라인들의 분리에 사용된다. 일부 실시예들은 구역별 또는 페이지별로 가이드들 및 여백들을 식별한다.
도 18은 문서 내의 가이드들 및 여백들을 식별하기 위한 일부 실시예들의 전반적인 프로세스(1800)를 도시한다. 프로세스(1800)는 도 19와 함께 설명되는데, 이 도면은 페이지(1900) 상에서 식별되는 두 텍스트 칼럼, 및 가이드들 및 여백들을 갖는 페이지(1900)를 도시한다. 도 18에 도시된 바와 같이, 프로세스(1800)는 (단계 1805에서) 문서의 일부를 수신한다. 이 부분은 복수의 페이지, 하나의 페이지, 또는 이전 구역 분석에 의해 식별된 구역이 될 수 있다. 문서의 일부는 본 출원서의 다른 부분에서 설명된 방법들에 의해 원시 글리프들로부터 재구조화된 워드들을 포함할 수 있다.
프로세스는 그 다음 (단계 1810에서) 클러스터 분석을 적용하여 수신된 문서 부분의 가이드들을 결정한다. 클러스터 분석은 프로세스가 워드들의 마지막들 또는 시작들이 함께 그룹화되는 x 좌표를 결정할 수 있게 하여, 이 x 좌표들이 정렬 가이드들과 유사하게 한다. 설명된 바와 같이, 도 19는 텍스트의 두 칼럼을 갖는 페이지(1900)를 도시한다. 페이지(1900)는 가이드들(1905)의 세트를 포함한다. 일부 실시예들은 가이드들로서 칼럼들의 맨 아래 및 맨 위 라인들을 결정하는 반면, 다른 실시예들은 왼쪽 및 오른쪽 정렬 가이드들만을 결정한다. 일부 실시예들은 또한 다른 정렬들, 이를테면 중심 정렬 또는 숫자 목록 내의 소수점들의 정렬을 위한 가이드들을 식별한다. 클러스터 분석 및 가이드 결정 프로세스는 아래에서 보다 자세히 설명된다.
다음으로, 프로세스는 (단계 1815에서) 문서 부분의 여백들을 판단한다. 일부 실시예들은 단계(1810)로부터의 정보를 이용하여 여백들을 결정한다. 도 19는 칼럼 1의 오른쪽 정렬 가이드 및 칼럼 2의 왼쪽 정렬 가이드 간의 페이지(1900)에 대해 결정된 여백(1910)을 도시한다. 일부 실시예들은 페이지 마진들을 여백들로 취급하는 반면, 다른 실시예들은 그러하지 않다. 일단 가이드들 및 여백들이 결정되면, 프로세스(1800)는 (단계 1820)에서 문서의 추가적인 재구조화를 위해 가이드들 및 여백들을 사용한다. 프로세스는 그 다음 종료된다.
A. 밀도 클러스터링( density clustering )
일부 실시예들은 페이지 상의 동일한 x 좌표 또는 거의 동일한 x 좌표에서 시작하거나 종료하는 텍스트 라인들을 찾고 x 좌표가 실제로 정렬 포인트라는 충분한 증거가 존재하는지 여부를 판단하여 오른쪽 및 왼쪽 정렬 가이드들을 판단한다. 일부 실시예들은 밀도 클러스터링이라고 하는 클러스터 분석 형태를 이용하여 정렬 가이드들을 결정한다. 일부 실시예들의 밀도 클러스터링은 아래 섹션 X에 설명된 메모리 및 프로세싱 효율성들을 이용하여 리소스 제한 장치(예컨대, iPhone®) 상에서 수행될 수 있다.
밀도 클러스터링은 종종 원래는 선명히 볼 수 있는 클러스터들과 혼합된 상당한 양의 "노이즈" 또는 랜덤 데이터가 있는 문제점들에 적용될 수 있다. 데이터가 실수의 세트들이면, 클러스터들은 주어진 밀도 제약값들을 최적으로 만족하는 서브세트들로 식별된다. 제약값들은 다른 것들보다 상대적으로 밀도가 높은 서브세트들을 선택하여 일반적으로 설계된다. 예를 들어, 일부 실시예들은 최소 크기의 클러스터 및 최대 스프레드의 클러스터를 제약값들로 사용한다.
도 20은 밀도 클러스터링을 수행하기 위한 일부 실시예들의 프로세스(2000)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 2005에서) 입력 데이터의 세트를 수신한다. 일부 실시예들에서, 입력 데이터는 페이지 상의 문자 글리프들의 좌표 데이터이다. 예를 들어, 밀도 클러스터링을 사용하여 왼쪽 정렬 가이드들을 찾는데 있어, 입력 데이터는 페이지 상의 각 워드의 제1 글자의 앵커(anchor)의 x 좌표이다.
프로세스는 그 다음 (단계 2010에서) 입력 데이터 세트를 정렬한다. 일부 실시예들은 데이터를 오름차순으로 정렬하는 반면, 다른 실시예들은 데이터를 내림 차순으로 정렬한다. 예를 들어, 밀도 클러스터링을 사용하여 정렬 가이드들을 결정하는 경우, 데이터(x 좌표 값들)가 가장 작은 x 좌표 값에서 가장 큰 x 좌표 값으로 정렬되어 만약 두 x 좌표 값들이 동일하면 (이 둘 사이에 동일한 x 좌표를 갖는 다른 워드들이 있지 않는 한) 이들은 정렬된 데이터 내의 서로 이웃하도록 한다. 일부 실시예들은 정렬된 데이터에 대한 새로운 어레이를 생성하는 반면, 일부 실시예들은 섹션 X에서 아래에서 설명된 바와 같이 지표들의 간접적으로 정렬된 어레이를 사용한다.
다음으로, 프로세스(2000)는 (단계 2012에서) 세트가 적어도 두 피스의 데이터를 갖는지 여부를 판단한다. 적어도 두 피스를 갖지 않으면, 클러스터링할 것이 없기 때문에, 프로세스는 종료한다. 그렇지 않으면, 프로세스는 진행하여 (단계 2015에서) 정렬된 세트 내의 연속적인 데이터 간의 차이들의 세트를 결정한다. 이러한 세트는 입력 데이터 세트보다 하나 적은 값을 갖는다. 예로서, 페이지 상에 3개의 워드가 있는 경우, 차이들의 세트 내의 두 값들은 제1 및 제2 워드의 x 좌표 값들 간의 차이 및 제2 및 제3 워드들의 x 좌표 값들 간의 차이이다.
다음으로, 프로세스는 (단계 2020에서) 변수 d를 차이들의 세트 내의 가장 큰 평가되지 않은 차이로 설정한다. 예를 들어, 워드들의 세트에 대한 차이들이 0.7인치, 0.2인치, 0.0인치, 및 0.4인치이면, 변수 d는 0.7인치로 초기에 설정될 것이다. 프로세스는 그 다음 (단계 2025에서) 차이가 d이상일 경우마다 정렬된 데이터를 분할하여 데이터의 서브세트들의 세트를 생성한다. d가 가장 큰 차이로 설정되기 때문에, 제1 분할은 항상 d와 동일한 차이들에서만 정렬된 데이터를 분할한다. 0.7, 0.2, 0.0 및 0.4의 차이들을 갖는 5개의 데이터 값들의 위의 예에서, 분할은 두 서브세트들을 생성한다(하나의 서브세트 내의 제1 값 및 다른 서브세트 내의 다른 4개의 값).
프로세스는 그 다음 (단계 2030에서) 해결할 문제에 대한 특정 제약값들을 충족하는 서브세트들의 세트 S를 결정한다. 일부 실시예들에서, 제약값들의 목적은 다른 서브세트들보다 상대적으로 밀도가 높은 서브세트들을 결정하는 것이다. 일부 실시예들은 두 밀도 제약값들을 사용한다: 최소 클러스터 크기(즉, 서브세트 내의 최소 수의 값들) 및 최대 클러스터 스프레드(즉, 서브세트 내의 가장 큰 값 및 가장 작은 값 간의 가장 큰 허용된 차이). 정렬 가이드를 결정하기 위한 밀도 클러스터링을 사용하는 경우, 일부 실시예들은 평가되고 있는 페이지 또는 구역 내의 전체 라인들의 일부(fraction)인 최소 클러스터 크기를 이용하는 반면, 다른 실시예들은 상수를 사용한다. 일부 실시예들은 워드들의 (왼쪽 정렬에 대한) 첫번째 또는 (오른쪽 정렬에 대한) 마지막 문자들의 중간 폰트 크기의 일부인 최대 스프레드를 사용한다.
제약값들을 충족하는 서브세트들의 세트 S가 일단 결정되면, 프로세스는 (단계 2035에서) S가 비어있는지 여부를 판단한다. S가 비어 있으면, 프로세스는 아래에서 설명되는 단계 2055로 진행한다. S가 적어도 하나의 서브세트를 포함하는 경우, 프로세스는 (단계 2040에서) S에 대한 최적화 기능을 평가한다. 일부 실시예들은 제약값들을 만족하는 가장 큰 서브세트를 갖는 세트 S를 찾는 최적화 기능을 사용한다. 다른 실시예들은 최적화 기능을 이용하여 제약값들을 만족하는 모든 서브세트들에 대한 특정 값(예컨대, 서브세트의 크기에서 최소 클러스터 크기를 뺀 것)의 제곱들의 합을 최대화한다. 그러나 다른 실시예들은 위에서 언급된 최적화 기능들 중 하나를 이용하고, 그 다음 비등한 경우 다른 것을 사용한다. 다른 최적화 기능들이 다른 실시예들에 의해 사용된다.
다음으로, 프로세스는 (단계 2045에서) 세트 S가 최적화 기능에 기초하여 현재까지 가장 최적화되었는지 여부를 판단한다. S가 가장 최적화되지 않았다면, 프로세스는 아래에서 설명되는 단계 2055로 진행한다. 그렇지 않고, S가 가장 최적화되었다면, 프로세스는 (단계 2050에서) S를 현재까지 찾은 클러스터들의 최상의 세트로 저장한다. (d가 가장 큰 차이인) 제1 통과(pass through)는 S가 비어 있지 않으면 항상 이 점에서 가장 최적이 될 것이다. 다음 통과들에서, 현재 S는 클러스터들의 저장된 세트와 비교될 것이다.
프로세스는 그 다음 (단계 2055에서) 평가되지 않은 차이들이 있는지 여부를 판단한다. 일부 실시예들은 각 가능한 분할을 테스트하여 가장 최적의 클러스터 세트를 찾는다. 일부 이러한 실시예들은 아래의 섹션 X에서 설명된 효율성 기술들을 이용하여 더 빠르고 더 효율적인 프로세싱을 가능하게 한다. 프로세스가 평가되지 않은 차이들이 있다고 판단하는 경우, 프로세스는 위에서 설명된 단계 2020으로 진행한다.
그렇지 않으면, 일단 모든 차이가 평가되면, 프로세스는 (단계 2060에서) 현재 저장된 최적의 세트(또는 제약값들을 충족하는 클러스터들이 없으면 빈 세트)를 클러스터들의 최종 세트로 출력한다. 정렬 가이드들을 결정하는 경우, 최종 클러스터들의 세트는 매우 가까운 x 좌표들을 갖는 워드들의 그룹들이 된다. 프로세스는 그 다음 종료한다. 당업자라면 밀도 제약값들 및 최적의 측정에 더하여, 프로세스(2000)가 일정한 제약값을 클러스터들에 가한다: 즉, 클러스터 내의 연속적인 값들 간의 내부 클러스터 차이는 내부 클러스터 차이들과 동일하거나 이를 초과하지 않는데, 데이터가 항상 지정된 틈 최소값 이상인 모든 차이들에서 항상 분할되기 때문이다.
B. 정렬 가이드들의 결정
위에서 설명된 바와 같이, 일부 실시예들은 페이지 상에서 동일하거나 거의 동일한 x 좌표에서 시작하거나 종료하는 글리프들의 연관된 세트들(예컨대, 워드, 텍스트 라인)을 검색하고 x 좌표가 실제로 정렬 지점이라는 충분한 증거가 존재하는지 여부를 판단한다. 일부 실시예들은 유사하지만 동일하지는 않은 프로세스들을 이용하여 왼쪽 정렬 가이드들 및 오른쪽 정렬 가이드들을 찾는다.
도 21은 왼쪽 정렬 가이드들을 결정하기 위한 일부 실시예들의 프로세스(2100)를 개념적으로 도시한다. 프로세스(2100)의 일부들은 도 22 내지 24와 함께 설명된다. 도 22 내지 24는 페이지(2200) 상의 왼쪽 정렬 가이드를 식별하는 프로세스를 도시한다. 도 21에 도시된 바와 같이, 프로세스(2100)는 (단계 2105에서) 밀도 클러스터링에 대한 입력 데이터를 문서의 영역 내의 워드들의 왼쪽 가장자리의 x 좌표들로 설정한다. 영역은 일부 실시예들에서 페이지 또는 페이지의 구역이다. 일부 실시예들에서, 특정 워드의 왼쪽 가장자리는 제1 글리프에 대해 예상된 왼쪽 정렬 위치로 조정된, 특정 워드 내의 제1 글리프의 앵커의 x 좌표이다.
프로세스는 그 다음 (단계 2110에서) 원하는 클러스터 속성들을 결정한다. 일부 실시예들에서, 클러스터 속성들은 위에서 설명된 밀도 클러스터링에 대한 제약값들이다. 일부 실시예들은 두 밀도 제약값들을 이용한다: 최소 클러스터 크기(즉, 서브세트 내의 최수 수의 값들) 및 최대 클러스터 스프레드(즉, 서브세트 내의 가장 큰 값 및 가장 작은 값 간의 허용된 가장 큰 차이). 정렬 가이드들을 결정하기 위한 밀도 클러스터링을 이용하는 경우, 일부 실시예들은 평가되고 있는 페이지 또는 구역 내의 전체 라인들의 일부인 최소 클러스터 크기를 이용하는 반면, 다른 실시예들은 상수를 이용한다. 일부 실시예들은 워드들의 (왼쪽 정렬에 대한) 첫번째 또는 (오른쪽 정렬에 대한) 마지막 문자들의 중간 폰트 크기의 일부인 최대 스프레드를 사용한다. 제약값들의 일 예는 최소 클러스터 크기가 영역 내의 텍스트 라인들의 전체 수의 5%이고, 최대 스프레드가 중간 폰트 크기의 10%이다.
다음으로, 프로세스는 (단계 2115에서) 결정된 클러스터 속성들을 이용하여 밀도 클러스터링을 입력 데이터에 적용하여 정렬 가이드들이 될 수 있는 x 좌표 값들의 클러스터들을 결정한다. 일부 실시예들은 위에서 설명된 바와 같이 프로세스(2000)를 사용한다.
프로세스(2100)는 그 다음 (단계 2117에서) 평가되지 않은 클러스터들이 있는지 여부를 판단한다. 클러스터들이 없거나 모든 클러스터들이 평가된 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 2120에서) 클러스터(즉, 클러스터 분석으로부터 출력된 클러스터들 중 하나)를 선택한다. 프로세스는 그 다음 (단계 2125에서) 왼쪽 정렬 가이드를 클러스터에서 가장 작은 값 및 가장 큰 값으로서의 최소 및 최대 x 좌표들을 갖고 페이지의 맨 위 및 맨 아래로서의 최소 및 최대 y 좌표를 갖는 직사각형으로 설정한다. 일부 경우에서, 최소 및 최대 x 좌표는 클러스터 내의 모든 x 좌표가 동일한 값을 갖기 때문에 동일할 것이다. 다른 경우들에서, 클러스터에 우연히 들어가는 작은 일탈 값 또는 워드들은 직사각형에 0이 아닌 폭을 가져다 준다.
도 22는 일부 실시예들에서 잠재적 왼쪽 정렬 가이드(2205)로 페이지(2200)를 도시한다. 직사각형(2205)의 최소 x 좌표는 오른쪽 칼럼(2215)의 왼쪽 가장자리에 의해 설정되는 반면, 최대 x 좌표는 페이지의 중간에서 워드 "tate"(2210)에 의해 설정되는데, 워드(2210)의 시작이 오른쪽 칼럼의 왼쪽 가장자리를 형성하는 워드들의 시작에 충분히 가까워 이것이 밀도 클러스터링 프로세스에 의해 이 워드들로 그룹화되기 때문이다.
프로세스(2100)는 그 다음 (단계 2130에서) 직사각형 및 직사각형을 횡단하는 워드들 내에서 시작하는 워드들의 분석에 기초하여 제약값들을 충족하지 않는 y 좌표들에서 직사각형을 제거한다. 프로세스는 그 다음 위에서 설명된 단계(2117)로 진행한다. 일부 실시예들은 워드가 직사각형의 왼쪽에서 시작하고 직사각형으로 교차하는 지점에서 직사각형의 부분을 제거한다. 직사각형은 또한 두 교차 워드들 간의 충분한 수의 경계 워드들을 갖지 않는 두 경계 워드들 사이인 임의의 y-좌표에서 제거된다. 경계 워드는 직사각형의 가장자리들 중 하나 내에서 또는 하나에서 시작하는 워드이다. 일부 실시예들은 교차하는 워드들 사이에 적어도 5개의 경계 워드가 있어야 하는 요건을 사용하고, 이 5개의 경계 워드들 중 적어도 하나는 이의 텍스트 라인 상의 가장 왼쪽이어야 하거나 정규 워드 틈보다 더 많이 이의 텍스트 라인 상의 이전 워드로부터 분리되어야 한다. 일부 실시예들은 본 명세서에서 참조로 통합되는 Mansfield 등에 의한 발명의 명칭이 "Semantic Reconstruction"인 미국 특허 공개공보 제2007/0250497에 설명된 프로세스들을 사용하여, 워드 틈 및 더 큰 틈을 결정한다. 일부 실시예들은 상이한 요건들(예컨대, 교차 워드들 사이에 5개의 경계 워드들 보다 적거나 많음)을 사용하여 단계(2130)를 수행한다.
도 23은 동그라미로 표시된 직사각형(2205)에 대한 교차 워드들을 갖는 페이지(2200) 및 직사각형(2205)을 도시한다. 교차 워드들은 이들 중 워드들(2340)("reprehenderit") 및 (2315)("dolore")를 포함한다. 교차 워드들(2340 및 2315) 간에서 두 경계 워드들(2210)("tate") 및 (2325)("esse")이 있다: 그러나, 교차 워드들 사이의 경계 워드들에 대한 요건이 세 개 이상인 경우, 직사각형은 이 섹션을 통해 또한 제거된다. 일부 실시예들은 교차 워드들 간의 충족하지 않은 영역들 및 교차 워드들의 가장 위로부터 가장 아래로만 제거한다. 다른 실시예들은 또한 정렬 가이드들을 넘을 것 같은 영역들, 이를테면 교차 워드(2330)("auteir")로부터 이 위의 경계 워드(2335)("reprehenderit")로의 영역을 제거한다.
도 24는 페이지(2200)에 대한 왼쪽 정렬 가이드들(2405 및 2410)을 도시한다. 페이지의 중심 내의 콜-아웃(call-out) 영역 때문에, 이 특정 x 좌표에서의 왼쪽 정렬 가이드들은 전체 페이지(2200)의 길이에 계속하지 않는다.
위에서 언급된 바와 같이, 일부 실시예들은 오른쪽 정렬 가이드들을 판단하기 위한 프로세스(2100)와 유사한 프로세스를 이용한다. 도 25는 오른쪽 정렬 가이드를 결정하기 위한 일부 실시예들의 프로세스(2500)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 2505에서) 밀도 클러스터링에 대한 입력 데이터를 문서의 영역 내의 워드들의 오른쪽 가장자리의 x 좌표로 설정한다. 영역은 일부 실시예들에서 페이지 또는 페이지의 구역이다. 일부 실시예들에서, 특정 워드의 오른쪽 가장자리는 특정 워드 내의 마지막 글리프의 앵커의 x 좌표에, 이 글리프에 대해 예상된 오른쪽 정렬 위치로 조정된, 워드 내의 마지막 글리프에 대한 전진 벡터(advance vector)의 x 좌표를 더한 것이 된다.
프로세스는 그 다음 (단계 2510에서) 원하는 클러스터 속성들을 결정한다. 일부 실시예들에서, 클러스터 속성들은 위에서 설명된 밀도 클러스터링에 대한 제약값들이다. 일부 실시예들은 두 밀도 제약값들을 이용한다: 최소 클러스터 크기(즉, 서브세트 내의 최소 수의 값들) 및 최대 클러스터 스프레드(즉, 서브세트 내의 가장 큰 값 및 가장 작은 값 간의 최대 허용 차이). 정렬 가이드들을 결정하기 위한 밀도 클러스터링을 사용하는 경우, 일부 실시예들은 페이지 내의 전체 라인들의 일부 또는 평가되고 있는 구역인 최소 클러스터 크기를 이용하는 반면, 다른 실시예들은 상수를 이용한다. 일부 실시예들은 워드들 중 (왼쪽 정렬에 대한) 첫번째 또는 (오른쪽 정렬에 대한) 마지막 문자들의 중간 폰트 크기의 일부인 최대 스프레드를 사용한다. 제약값들의 일 예는 최소 클러스터 크기가 영역 내의 텍스트 라인들의 전체 수의 5%이고, 최대 스프레드가 중간 폰트 크기의 10%이다.
다음으로, 프로세스는 (단계 2515에서) 결정된 클러스터 속성들을 이용하여 밀도 클러스터링을 입력 데이터에 적용하여 정렬 가이드들이 될 수 있는 x 좌표 값들의 클러스터들을 결정한다. 일부 실시예들은 위에서 설명된 바와 같이 프로세스(2000)를 사용한다.
프로세스는 그 다음 (단계 2517에서) 임의의 프로세싱되지 않은 클러스터가 있는지 여부를 판단한다. 클러스터가 없거나 모든 클러스터가 프로세싱되었으면, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 2520에서) 클러스터를 선택한다(즉, 클러스터 분석으로부터 출력된 클러스터들 중 하나). 프로세스는 그 다음 (단계 2525에서) 오른쪽 정렬 가이드를 클러스터 내의 최소 및 최대 값으로서 최소 및 최대 x 좌표를 갖고 페이지의 맨 위 및 아래로서 최소 및 최대 y 좌표를 갖는 직사각형으로 설정한다. 일부 경우들에서, 클러스터 내의 모든 x 좌표는 동일한 값을 갖기 때문에, 최소 및 최대 x 좌표는 동일하다. 다른 경우들에서, 클러스터에 우연히 들어간 작은 이상치 또는 워드들은 직사각형에 0이 아닌 폭을 가져다 준다.
프로세스는 그 다음 (단계 2530에서) 직사각형 내에서 종료되는 워드들 및 직사각형을 교차하는 워드들의 분석에 기초하여 제약값들을 충족하지 않는 y 좌표에서의 직사각형을 제거한다. 프로세스는 그 다음 위에서 설명된 단계(2517)로 진행한다. 일부 실시예들은 직사각형에서 워드가 교차하거나 시작하고 직사각형의 오른쪽에서 종료하는 지점에서 직사각형의 부분을 제거한다. 직사각형은 또한 두 교차 워드들 간에 충분한 수의 경계 워드들을 갖지 않는 두 교차 워드들 간에 있는 임의의 y 좌표에서 제거된다. 경계 워드는 직사각형의 가장자리들 내에서 종료되거나 이들 중 하나에서 종료되는 워드이다. 일부 실시예들은 교차 워드들 간에 적어도 5개 경계 워드들이 있어야 하는 요건을 사용하고, 이 5개의 경계 워드들 중 적어도 하나는 이의 텍스트 라인 상의 가장 오른쪽이어햐 하거나 정규 워드 틈보다 큰 만큼 자신의 텍스트 라인 상의 다음워드로부터 떨어져야 한다. 일부 실시예들은 위에서 언급된 미국 특허 공개공보 제2007/0250497호에 설명된 프로세스들을 이용하여 워드 틈들 및 더 큰 틈들을 결정한다. 일부 실시예들을 상이한 요건들(예컨대, 교차 워드들 사이에 5개의 경계 워드들보다 적거나 많음)을 이용하여 단계(2530)를 수행한다.
C. 여백 결정
가이드들을 결정한 후, 일부 실시예들은 그 다음 영역(예컨대, 구역, 페이지 등)의 여백들을 판단한다. 일부 실시예들은 가이드 결정 프로세스(예컨대, 프로세스 2100 및 2500)로부터의 정보를 이용하여 영역의 연관된 글리프들(예컨대, 여백들) 간의 채워지지 않은 흰 공간의 그룹화를 결정한다. 일부 실시예들은 또한 영역 내의 여백들을 결정하기 위한 가이드들에 더하여 다른 정렬 지점들을 사용한다.
도 26은 영역을 위한 여백들을 결정하기 위한 일부 실시예들의 프로세스(2600)를 개념적으로 도시한다. 프로세스(2600)의 부분들은 도 27 내지 29와 함께 설명될 것이다. 도 27 내지 29는 페이지(2700) 상의 여백을 식별하는 프로세스를 도시한다.
도 26에 도시된 바와 같이, 프로세스는 (단계 2605에서) 정렬 정보를 수신한다. 일부 실시예들에서, 이 정보는 프로세스들(2100 및 2500)에 의해 결정된 가이드들이다. 일부 실시예들은 다른 정렬 지점들 뿐만 아니라 가이드들을 포함한다. 예를 들어, 일부 실시예들에서, 왼쪽으로 정렬된(양쪽맞춤이 아닌) 텍스트 내의 텍스트 라인들의 마지막은 오른쪽 정렬 지점들로 취급된다. 이는 제1 칼럼의 오른쪽 가장자리에서 가이드가 발견되지 않더라도 칼럼 틈들 내에서 여백들이 식별될 수 있도록 한다. 유사하게, 오른쪽 정렬된 텍스트의 왼쪽 가장자리, 또는 중심화된 텍스트의 양 가장자리들은 일부 실시예들에서 정렬 지점들로 고려된다.
프로세스(2600)는 그 다음 프로세싱되지 않은 오른쪽 정렬 지점들이 있는지 여부를 (단계 2607에서) 판단한다. 오른쪽 정렬 지점들이 없거나 모든 것들이 프로세싱되었으면, 프로세스는 종료된다. 그렇지 않으면 프로세스는 오른쪽 정렬 지점을 (단계 2610에서) 선택한다. 일부 실시예들에서, 프로세스는 가장 왼쪽의 오른쪽 정렬 지점을 우선 식별하는 반면, 다른 실시예들에서는 랜덤 오른쪽 정렬 지점을 고른다.
프로세스는 그 다음 (단계 2615에서) 왼쪽 정렬 지점이 선택된 오른쪽 정렬 지점 및 영역의 오른쪽 가장자리 사이에 존재하는지 여부를 판단한다. 왼쪽 정렬 지점들이 없는 경우, 프로세스는 위에서 설명되는 단계(2607)로 진행한다. 그렇지 않고, 오른쪽 정렬 지점 및 영역 가장자리 사이에 적어도 하나의 왼쪽 정렬 지점이 있는 경우, 프로세스는 (단계 2620에서) 선택된 오른쪽 정렬 지점으로부터의 영역에 걸쳐 오른쪽으로 움직이는 다음 왼쪽 정렬 지점을 식별한다. 이는 프로세스가 테스트하여 여백이 있는지 여부를 판단하는 이 두 지점들 간의 영역이다.
일단 오른쪽 및 왼쪽 정렬 지점들이 식별되면, 프로세스는 (단계 2625에서) 여백을 최소 x 좌표로서 오른쪽 정렬 지점 및 최대 x 좌표로서 왼쪽 정렬 지점을 갖는 직사각형으로 설정한다. 직사각형의 최소 및 최대 y 좌표는 페이지의 맨 위 및 맨 아래이다. 도 27은 페이지(2700) 및 가능한 여백으로서 테스트될 직사각형(2705)을 도시한다. 최소 x 좌표는 제1 칼럼의 오른쪽 가장자리에서의 오른쪽 정렬 지점이고, 최대 x 좌표는 제2 칼럼의 왼쪽 가장자리에서의 왼쪽 정렬 지점이다.
다음으로, 프로세스는 (단계 2630에서) 직사각형을 교차하고 직사각형의 경계를 이루는 워드들의 분석에 기초하여 제약값들을 충족하지 않는 y 좌표에서 여백을 제거한다. 일부 실시예들은 워드가 직사각형을 교차하거나 직사각형 내에서 시작하는 임의의 위치에서의 직사각형의 부분을 제거한다. 직사각형은 또한 두 교차 워드 간에 충분한 수의 경계 워드들을 갖지 않는 두 교차 워드 간에 있는 임의의 y 좌표에서 제거된다. 여백에 대한 교차 워드는 직사각형의 왼쪽 가장자리에서 종료하거나 직사각형의 오른쪽 가장자리에서 시작하는 워드이다. 일부 실시예들은 교차 워드들 간에서 적어도 5개의 경계 워드가 있어야 하고 이 5개의 경계 워드들 중 적어도 하나는 텍스트 라인의 가장 오른쪽에 있거나 텍스트 라인 상의 이전 워드로부터 정규 워드 간격보다 많이 떨어져 있거나 텍스트 라인의 가장 오른쪽에 있거나 텍스트 라인 상의 다음 워드로부터 정규 워드 간격보다 많이 떨어져 있다. 일부 실시예들은 위에서 언급된 미국 특허 공개공보 제2007/0250497호에 설명된 프로세스들을 이용하여, 워드 간격 및 더 큰 간격을 결정한다. 일부 실시예들은 상이한 요건들(예컨대, 교차 워드들 간에 5개의 경계 워드들보다 적거나 많음)을 이용하여 단계(2630)를 수행한다. 프로세스는 그 다음 위에서 설명된 단계(2607)로 진행한다.
도 28은 페이지(2700) 및 원으로 표시된 직사각형(2705)에 대한 교차 워드들을 갖는 직사각형(2705)을 도시한다. 교차 워드들은 그 중에서 워드들(2810, "cillum" 및 2815 "nulla")을 포함한다. 교차 워드들(2810 및 2815) 간에는 경계 워드(2820, "eu")가 있다; 그러나, 만약 교차 워드들 간의 경계 워드들에 대한 요건이 둘 이상이면, 직사각형은 이 섹션을 통해 역시 제거된다. 일부 실시예들은 교차 워드들의 가장 큰 상승으로부터 가장 큰 하강으로만 제거하고 교차 워드들 사이의 비자격(non-qualifying) 영역들만을 제거한다. 다른 실시예들은 또한 여백들을 넘을 것 같은 영역들을 제거한다.
도 29는 페이지(2700)에 대한 여백들(2905 및 2910)을 도시한다. 페이지의 중심 내의 콜-아웃 영역 때문에, 두 주요 칼럼들 사이의 여백은 페이지의 전체 길이에 달하지 않는다.
일부 실시예들은 의미적 재구조화 프로세스를 통해 가이드들 및 여백들을 사용한다. 예를 들어, 여백들이 텍스트 라인들을 나누고 칼럼들을 식별하는데 사용되는데, 이 프로세스들은 섹션 IV에서 아래에서 설명된다.
D. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명된 가이드 및 여백 분석 프로세스들은 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 다른 핸드헬드 또는 리소스 제한 장치(또는 컴퓨터 판독가능 매체에 저장된 것) 상에서 실행되는 소프트웨어로 실행된다. 도 30은 개념적으로 문서 내의 가이드 및 여백들을 식별하기 위한 일부 실시예들의 가이드 및 여백 분석 애플리케이션(3000)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션(예컨대, 문서 재구조화 애플리케이션)으로 통합되는 반면, 다른 실시예들에서 애플리케이션은 오퍼레이팅 시스템 내에서 수행될 수 있다.
가이드 및 여백 분석 애플리케이션(3000)은 가이드 식별 모듈(3005), 밀도 클러스터링 모듈(3010), 및 여백 식별 모듈(3015), 뿐만 아니라 가이드 및 여백 정보 저장소(3020)를 포함한다.
도 30은 또한 문서 콘텐츠(3025)를 포함한다. 가이드 식별 모듈(3005)은 문서 콘텐츠(3025)로부터 정보를 수신한다. 가이드 식별 모듈(3005)은 문서 콘텐츠를 분석하여 문서 내의 정렬 가이드들을 식별한다. 식별된 가이드들은 여백 식별 모듈(3015) 뿐만 아니라 가이드 및 여백 정보 저장소(3020) 및 문서 콘텐츠(3025)로 전달된다. 일부 실시예들에서, 가이드 식별 모듈(3005)은 프로세스들(2100 및 2500)의 일부 또는 전부를 수행한다.
가이드 식별 모듈(3005)은 또한 정보를 밀도 클러스터링 모듈(3010)로 전달하고 이 모듈로부터 정보를 수신한다. 밀도 클러스터링 모듈(3010)은 가이드 식별 모듈(3005) 및/또는 가이드 여백 정보 저장소(3025)로부터 입력 데이터를 수신하고 잠재적 가이드들을 판단하기 위해 입력 데이터 상에 밀도 클러스터링을 수행한다. 일부 실시예들에서, 밀도 클러스터링 모듈(3010)은 프로세스(2000)의 일부 또는 전부를 수행한다.
여백 식별 모듈(3015)은 가이드 식별 모듈(3005) 및 문서 콘텐츠(3025)로부터 정보를 수신한다. 여백 식별 모듈은 수신된 정보를 분석하여 문서 내의 여백들을 식별한다. 식별된 여백들은 가이드 및 여백 정보 저장소(3020) 및 문서 콘텐츠(3025)로 전달된다. 일부 실시예들에서, 여백 정보 모듈(3015)은 프로세스(2600)의 일부 또는 전부를 수행한다.
일부 실시예들에서, 위에서 설명된 모듈들 또는 다른 모듈들에 의해 수행되는 프로세스들의 결과들은 전자 저장소에 (예컨대, 문서 객체 모델의 일부로서) 저장된다. 문서 객체 모델은 그 다음 사용자가 문서를 리뷰하고 및/또는 상호작용하도록 (예컨대, 터치스크린, 커서 제어 장치 등) 전자 디스플레이 장치(예컨대, 핸드헬드 장치, 컴퓨터 스크린 등) 상에 문서를 디스플레이하는데 사용될 수 있다.
IV . 레이아웃 및 흐름 결정
문서들은 일반적으로 암시적 구조 및 콘텐츠의 흐름을 갖는다. 구체적으로, 일부 경우들에서, 문자들의 정렬된 시퀀스들(및 인라인 그래픽들)이 워드들을 구성하고, 정렬된 워드들의 시퀀스들을 텍스트 라인들(또는 하이픈을 갖는 걸쳐 있는 텍스트 라인들)을 구성하며, 정렬된 텍스트 라인들의 시퀀스들을 단락들을 구성하고, 정렬된 단락들의 시퀀스들은 칼럼들(또는 걸쳐 있는 칼럼들)을 구성하며, 정렬된 칼럼들의 시퀀스들은 레이아웃들을 구성하고, 정렬된 레이아웃들의 시퀀스들을 문서의 섹션들을 구성한다. 이러한 구조가 전자 문서의 파일 포맷에 제공되지 않는 경우, 구조는 이미 소프트웨어에 액세스할 수 없게 되어 있다. 단순히 문서를 보는 것은 문서 구조를 필요로 하지 않지만, 문서를 편집, 불러오기, 검색, 스타일링, 또는 다른 용도로 맞게 전환하기 위한 애플리케이션들은 제대로 기능하기 위해서 문서 구조 및 흐름의 정보를 필요로 한다.
본 발명의 일부 실시예들은 문서의 레이아웃 및 흐름 또는 문서의 영역을 결정하기 위한 방법들을 제공한다. 이는 의미적 계층(예컨대, 문서의 워드들, 라인들 및 단락들) 뿐만 아니라 레이아웃 속성들 이를 테면 칼럼들 및 문서의 의도된 읽기를 위해 칼럼들이 어떻게 서로 맞는지를 결정하는 것을 판단한다. 일부 실시예들에서, 프로세스들의 목적은 사람 눈이 시작부터 끝까지 문서를 읽는 순서를 식별하는 것이다.
도 31은 문서의 레이아웃 흐름을 결정하기 위한 일부 실시예들의 프로세스(3100)를 개념적으로 도시한다. 프로세스(3100)가 도 32와 함께 설명된다. 도 32는 두 칼럼의 텍스트를 갖는 문서의 페이지(3200)에 대해 결정되는 흐름 정보 및 다양한 레이아웃의 시퀀스를 도시한다. 도 32에서, 페이지(3200)의 콘텐츠는 중요하지 않고, 대신 라인들, 단락들 등이 중요하다는 것을 알 수 있다. 도 31에 도시된 바와 같이, 프로세스(3100)는 (단계 3105에서) 문서의 부분을 수신한다. 일부 실시예들에서, 이 부분은 전체 문서이거나, 섹션, 페이지 또는 구역이다.
프로세스는 그 다음 (단계 3110에서) 수신된 문서 내의 텍스트 라인들을 식별한다. 이는 공통 기준선을 공유하는 문자들을 식별하고 필요한 경우 예비 라인들을 함께 병합하는 것을 포함한다(예컨대, 서브스크립트 및 수퍼스크립트). 도 32는 라인들(3205 및 3210)의 식별을 도시한다. 일부 실시예들의 라인 식별 프로세스는 아래의 서브섹션 A에서 더 자세히 설명된다.
다음으로, 프로세스는 (단계 3115에서) 텍스트 내의 워드들을 식별한다. 일부 실시예들은 위에서 언급된 미국 특허 공개공보 제2007/0250497호에서 설명된 차이 클러스터링을 이용하여 텍스트 내의 워드들을 식별한다. 도 32는 라인(3205)으로부터의 워드(3215)("Lorem") 및 라인(3210)으로부터의 워드(3220)("amet")를 포함하는 페이지(3200) 상의 워드들의 식별을 도시한다. 워드 식별 프로세스는 또한 아래의 서브섹션 B에서 보다 자세히 설명된다.
프로세스는 그 다음 (단계 3120에서) 텍스트가 불연속적인 부분의 텍스트 라인들을 분리한다. 도 32는 라인(3205)이 라인들(3225 및 3230)로 분리되고 라인(3210)이 라인들(3235 및 3240)로 분리되는 것을 보여준다. 일부 실시예들의 라인 분리 프로세스가 아래의 서브섹션 C에서 보다 자세히 설명된다.
라인들을 분리한 후에, 프로세스는 (단계 3125에서) 텍스트 라인들을 단락들에 위치시킨다. 도 32는 페이지(3200) 상에서 식별된 단락들(3245 및 3250)을 도시한다. 단락 식별 프로세스는 아래의 서브섹션 D에서 보다 자세히 설명된다.
마지막으로, 프로세스는 (단계 3130에서) 단락들을 칼럼들 및 레이아웃들에 위치시킨다. 도 32는 페이지(3200) 상에서 식별된 칼럼들(3255 및 3260)을 도시한다. 칼럼 및 레이아웃 식별 프로세스는 아래의 서브섹션 E에서 보다 자세히 설명된다.
일부 실시예들은 한 번에 프로세스(3100)의 모든 작업을 수행하지 않는다. 대신, 일부 실시예들은 프로세스(3100)의 작업들 간의 다른 문서 재구조화 프로세스들을 수행한다. 예를 들어, 일부 실시예들은 텍스트 라인들 및 텍스트 내의 워드들을 결정하지만, 그 다음 텍스트 라인들을 분리하기 전에 가이드들 및 여백들을 식별한다.
A. 초기 라인 식별
위에서 설명된 바와 같이, 일부 실시예들에서 텍스트 라인들이 식별되어야 한다. 텍스트의 특정 라인 내의 모든 문자는 반드시 항상 공통 기준선을 공유할 필요가 없기 때문에, 일부 실시예들은 두 라인들 내의 문자들이 텍스트의 동일한 라인의 일부로 읽혀지도록 의도된다는(예컨대, 수퍼스크립트 및 서브스크립트) 증거에 기초하여 라인들을 함께 병합 시도한다.
도 33은 텍스트의 라인들을 식별하고 병합하기 위한 일부 실시예들의 프로세스(3300)를 개념적으로 도시한다. 프로세스(3300)는 도 34 및 35와 함께 설명된다. 도 34는 텍스트 라인들을 겹치는 6개의 그룹들(3405-3430)을 갖는 페이지(3400)를 도시하고, 도 35는 본 발명의 일부 실시예들에 따른 텍스트 라인들의 이 그룹들의 병합을 도시한다.
도 33에 도시된 바와 같이, 프로세스는 (단계 3305에서) 문서의 부분을 수신한다. 일부 실시예들에서, 부분은 문서의 페이지, 또는 페이지의 구역 등이다. 프로세스는 그 다음 (단계 3307에서) 문서 부분 내에 임의의 문자들이 있는지 여부를 판단한다. 없는 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 3310에서) 공통 기준선을 공유하는 예비 텍스트 라인 특성으로 연관시킨다. 특성들은 이들이 동일한 y 좌표 앵커 지점을 갖는 경우 일부 실시예들에서 공통 기준선을 공유한다. 일반적으로, 공통 기준선을 공유하는 특성들을 연관시키는 것은 표준 텍스트의 라인들을 함께 그룹화한다. 일부 실시예들은 예비 텍스트 라인 내의 y 좌표 앵커 포인트들이 완전히 동일할 필요는 없지만 서로 작은 임계값 내에 있어야 하는 작은 임계값을 사용한다.
다음으로, 프로세스는 (단계 3315에서) 수직으로 중첩되는 텍스트 라인들의 그룹들을 식별한다. 두 라인들은 제1 라인의 경계 직사각형이 제2 라인의 경계 직사각형과 y-축 값들에서 겹치는 경우 일부 실시예들에서 수직으로 겹친다. 도 35는 6개 그룹의 수직으로 겹치는 텍스트 라인들: 라인들(3505 및 3506), 라인들(3510 및 3511), 라인들(3515 및 3516), 라인들(3520, 3521 및 3522), 라인들(3525 및 3526) 및 라인들(3530 및 3531)을 갖는 페이지(3400)를 도시한다. 라인(3520) 및 라인(3522)이 라인(3521)과 겹치기 때문에, 이들이 서로 겹치지 않더라도 라인(3520)은 라인(3522)와 그룹에서 연관된다. 수평 중첩이 없는 경우라도, 라인들(3530 및 3531)이 수직으로 겹치기 때문에, 이들은 일부 실시예들에서 서로 최초에 그룹화된다.
프로세스는 그 다음 (단계 3320에서) 평가되지 않은 그룹을 선택하고 (단계 3325에서) 그룹을 상이한 섹션들의 텍스트 라인들 간에서 수평 중첩을 갖지 않는 섹션들로 분할한다. 두 텍스트 라인은 제1 텍스트 라인의 경계 박스의 x 좌표가 제2 텍스트 라인의 경계 박스의 x 좌표와 중첩하는 경우 일부 실시예들에서 수평으로 중첩한다. 예를 들어, 라인들(3530 및 3531)은 수평으로 중첩하지 않고 따라서 동일한 라인으로 고려될 가능성이 적기 때문에 이 지점에서 분할된다. 일부 실시예들은 수평 중첩의 측정을 작은 거리(예컨대, 스페이스 문자의 2분의 1)만큼 텍스트 라인들의 시작 및 마지막에서 확장하여, 라인의 시작 및 마지막에서의 오프셋 문자들(예컨대, 서브스크립트 및 수퍼스크립트)이 병합된다. 예를 들어, 라인들(3510 및 3511) 간에 수평 중첩이 없지만, 라인(3510)의 마지막이 라인(3511)의 시작에 충분히 가깝기 때문에 이들은 분할되지 않는다.
선택된 그룹을 분할한 후에, 프로세스는 (단계 3330에서) 그룹으로부터의 평가되지 않은 섹션을 선택하고 (단계 3335에서) 맨 위에서 맨 아래로 섹션 내의 라인들을 정렬한다. 따라서, 만약 라인들(3520 내지 3522)을 갖는 선택된 섹션이 선택되면, 라인들은 우선 라인(3520)으로 정렬되고, 라인(3521)으로 두 번째로 정렬되면, 세번째로 라인(3522)으로 정렬된다. 다양한 실시예들은 오름차순, 내림차순, 기준선 또는 라인의 수직 위치의 다른 측정에 의해 라인들을 정렬한다.
프로세스는 그 다음 (단계 3340에서) 섹션 내의 가장 평가되지 않은 라인을 선택한다. 그 다음 프로세스는 (단계 3345에서) 선택된 라인 내의 (왼쪽에서 오른쪽으로 읽는 언어의 경우 왼쪽으로부터 읽을 때) 첫번째 평가되지 않은 문자를 선택한다. 프로세스는 (단계 3350에서) 선택된 문자가 다음 라인으로 병합될 수 있는지 여부를 판단한다. 일부 실시예들은 선택된 문자가 다음 라인 내의 임의의 문자와 수평적으로 상당히 겹치지 않는 경우 문자가 다음 라인으로 병합되도록 한다. 일부 실시예들은 문자들 간에서 어느 정도 작은 양의 수평 겹침을 가능하게 한다. 왼쪽에서 오른쪽으로 읽는 언어들에 대해, 일부 실시예들은 오프셋 문자들에 대한 공통 간격 조정을 담당하기 위해, 병합될 문자의 오른쪽 상에서 보다 병합될 문자의 왼쪽 상에서 중첩이 적도록 한다.
더욱이, 일부 실시예들은 중첩 문자들의 원래 삽입 순서가 인접하는 경우 임의의 중첩양을 가능하게 한다. 일부 실시예들에서, 삽입 순서는 문자들이 페이지상에 그려지는 순서이다. 종종(항상은 아니지만), 문자들은 이들이 읽히도록 의도된 순서로 그려지고, 따라서 두 수직 및 수평 중첩 문자들은 삽입 순서에서 인접하는 경우 이들은 서로 함께 읽히도록 의도된다.
프로세스가 선택된 문자가 다음 라인으로 병합될 수 있다고 판단하는 경우, 프로세스는 (단계 3355에서) 선택된 문자를 다음 라인으로 병합한다. 프로세스는 그 다음 아래에서 설명되는 단계(3365)로 진행한다. 그렇지 않고, 선택된 문자가 병합될 수 없는 경우, 프로세스는 (단계 3360에서) 선택된 문자를 선택된 라인에 유지한다.
다음으로, 프로세스는 (단계 3365에서) 선택된 라인이 더 많은 문자들을 포함하는지 여부를 판단한다. 현재 선택된 라인에서 문자들이 더 있는 경우, 프로세스는 단계(3345)로 진행하여 라인 내의 다음 평가되지 않은 문자를 선택한다. 그렇지 않고, 라인 내의 모든 문자들이 평가되었는 경우, 프로세스는 (단계 3370에서) 현재 섹션이 더 많은 라인들을 포함하는지 여부를 판단한다. 현재 선택된 섹션에 더 많은 라인들이 있는 경우, 프로세스는 단계(3340)로 진행하여 다음 평가되지 않은 라인을 선택한다.
그렇지 않고, 섹션 내의 모든 라인들이 평가된 경우, 프로세스는 (단계 3375에서) 선택된 그룹이 더 많은 섹션들을 포함하는지 여부를 판단한다. 현재 선택된 그룹 내에 더 많은 섹션들이 있는 경우, 프로세스는 단계(3330)로 진행하여 또 다른 섹션을 선택하고 이 섹션 내의 라인들을 병합한다. 그렇지 않고, 그룹 내의 모든 섹션들이 평가된 경우, 프로세스는 (단계 3380에서) 문서 부분 내에서 평가할 임의의 더 많은 그룹들이 있는지 여부를 판단한다. 더 많은 그룹들이 있는 경우, 프로세스는 단계(3320)로 진행하여 또 다른 그룹을 선택한다. 그렇지 않고, 모든 그룹들이 평가된 경우, 라인 병합이 문서 부분에 대해 완료되고 프로세스는 종료된다.
도 35는 일부 실시예들에서 페이지(3500)에 대한 라인 병합 결과를 도시한다. 라인(3506)은 라인(3505)으로 병합될 수 있어, 라인(3505)이 이제 라인(3506)으로부터의 수퍼스크립트 "m"을 포함하는 반면, 라인(3506)은 비어있고 따라서 제거된다. 라인들(3510 및 3511) 간에 수평 중첩에 없지만, 라인(3510)의 끝은 라인(3511)의 시작과 충분히 가까워서 이들이 분할되지 않고, 라인(3510) 전체가 라인(3511)로 병합될 수 있다. 라인(3516) 내의 두 문자들은 라인(3515)으로 병합된다.
라인들(3520 내지 3522)은 완전히 병합될 수 없다. 라인(3520) 내의 문자 "b"는 초기에 라인(3521)으로 병합된다. 그 다음, 라인(3521) 내의 문자 "A"는 문자 "c"와 중첩하지 않기 때문에 라인(3522)으로 병합된다. 그러나, 문자 "b"는 완전히 문자 "c"와 중첩하기 때문에 라인(3522)으로 병합되지 않는다. 따라서, 라인(3521)은 "b"만을 포함하고, 라인(3522)은 "A" 및 "c"를 포함하며, 라인(3520)은 비어 있다. 위에서 설명된 바와 같이, 일부 실시예들은 "b" 및 "c"가 삽입 순서에서 인접하면 라인(3522)에 "b"를 병합할 것이다.
비슷하게, 라인들(3525 및 3526)은 병합되지 않는다. 라인(3526) 내의 모든 문자들은 상당히 라인(3525) 내의 하나 이상의 문자와 중복하고, 따라서 라인(3525)으로 병합되지 않는다. 라인(3526) 내의 "T"가 페이지(3500)에 대한 삽입 순서에 있어 라인(3525)의 "h" 및 "n"의 사이가 될 가능성이 별로 없다. 마지막으로, 라인들 간에 수평 중첩이 없기 때문에 라인들(3530 및 3531)은 병합되지 않고 따라서 이들은 단계(3325)에서 분할되지 않는다.
라인들이 식별되고 병합된 후에, 워드들이 일부 실시예들에서 식별된다. 일부 실시예들은 미국 특허 공개공보 제2007/0250497호에 설명된 차이 클러스터링을 사용하여 워드 내의 레터들 간 및 워드들 간의 간격에 기초하여 워드들을 식별한다. 일부 실시예들에서, 차이 클러스터링은 또한 조각 간격들, 칼럼 간격들 등에 관한 정보를 제공한다. 일부 실시예들은 아래 섹션 X에서 설명된 메모리 및 프로세싱 효율성 기술들을 기용하여 차이 클러스터링을 수행한다.
B. 차이 클러스터링을 이용한 워드들 및 간격들의 식별
도 36은 차이 클러스터 분석을 수행하기 위한 일부 실시예들의 프로세스(3600)를 개념적으로 도시한다. 클러스터링의 복수의 레벨들/계층들이 존재할 수 있기 때문에 여러 형태의 클러스터 분석은 그룹들/클러스터들의 수의 사전지식을 필요로 한다. 예를 들어, 클러스터 분석을 이용하여 천체 물체들을 그룹화하는 경우, 클러스터들의 수의 내용은 클러스터 분석이 별, 태양계, 은하계, 또는 초은하계 상의 물체들을 그룹화하는지 여부를 판단한다. 그러나 클러스터 분석을 사용하여 콘텐츠의 요소들 간의 구조적 관계를 발견하는 경우, 예컨대, 그룹들의 수는 많은 경우에 알려지지 않는다. 예를 들어, 텍스트의 페이지의 경우, 문서는 텍스트의 주어진 최초 라인이 둘 이상의 단락의 일부들을 포함할 수 있도록 둘 이상의 텍스트 칼럼을 가질 수 있기 때문에, 글리프들이 워드들을 구성하고, 워드들이 결합하여 라인들을 형성하며, 라인들의 그룹들이 단락들을 구성한다고 상정될 수 없다.
일부 실시예들에서, 클러스터 분석은 지점들을 또 다른 클러스터의 포인드들보다 서로 가까운 클러스터들로 그룹화하는 데이터 지점들의 집합에 적용될 수 있는 기술들의 세트이다. 일부 실시예들에서, 클러스터 분석은 객체들 이를 테면 글리프들, 워드들, 및 텍스트 라인들 간의 수평 및 수직 틈들을 나타내는 데이터 지점들에 적용된다. 예를 들어, 일부 실시예들은 이제 설명될 k-평균 클러스터 분석을 이용한다. 공간적 틈을 나타내는 수들(p1, …, pN) 및 공지의 k에 대한 값(클러스터의 수)의 집합으로 시작하여, 이 기술은 이 수들을 Cj = {pi|aj≤pi<aj+1} 형태의 부등식에 의해 정의되는 k개의 클러스터들 C1, ….., Ck로 분할하는데 사용되는데, a1,… aK +1은 증가하는 순서이다. k-평균 클러스터 분석은 그 다음 클러스터들을 반복적으로 개선하는데 적용된다. 예를 들어, 만약 pi +1 - pi가 k-1 가장 큰 차이들 중 하나이면, pi +1은 pi와는 상이한 클러스터 내에 있고, pi +1 연속적인 값들 aj 중 하나이며, k-평균 클러스터 분석이 반복적으로 클러스터들을 정제하는데 적용된다. k-평균 기술은 각 클러스터 내의 수들의 평균을 취하는 것을 수반하고, 그 다음 이들을 가장 가까운 계산된 평균과 연관시켜 pi를 클러스터들로 재분배한다. 이는 클러스터들 또는 이들의 평균들에 변화를 주지 않을 때까지 반복적으로 수행된다.
일부 실시예들에서, 게시되고 본 명세서에서 "차이 클러스터링(difference clustering)"이라고 하는 기술이 주어진 소스 콘텐츠를 포함하는 콘텐츠 요소들 간에 존재하는 구조적 관계들 및/또는 하나 이상의 계층적 관계의 레벨들의 수 뿐만 아니라 콘텐트 요소가 결정된 레벨들 각각 내의 또 다른 콘텐츠와 관련되는지 여부를 판단하는데 사용될 수 있는 하나 이상의 특성을 결정하는데 사용된다. 일부 실시예들에서, 차이 클러스터링은 다른 기술들과 함께 k-평균 기술을 활용한다. 도 36에서 도시된 예에서, 콘텐츠 요소들의 위치들 간의 차이들(간격(spacing))이 차이 클러스터링 분석을 이용하여 분석된다. 일부 실시예들에서, 콘텐츠 요소들 간의 간격을 분석하여, 콘텐츠 요소들은 간격의 그룹화 데이터를 적어도 부분적으로 이용하여 그룹화될 수 있다. 일부 실시예들에서, 간격의 각 방향 성분은 별도로 분석된다. 예를 들어, 수평 성분에 대한 차이 클러스터링 분석이 문자 간격, 워드 간격, 및 칼럼 간격 간을 구분하는데 사용된다. 수직 성분에 대한 차이 클러스터링 분석은 일부 실시예들에서 라인 간격, 단락 간격, 및 텍스트 박스 간격을 구분하는데 사용될 수 있다. 프로세스(3600)는 단일 방향 성분에 대한 차이 클러스터링 분석을 개념적으로 도시한다. 프로세스는 하나 이상의 추가적인 방향 성분을 다시 분석하는데 사용될 수 있다. 일부 실시예들에서, 하나 이상의 차원에 따라 차이 클러스터 분석을 수행한 결과들은 서로 결합되어 하나 이상의 레벨들에서의 콘텐츠 요소들 간의 구조적 관계를 결정한다.
도 36에 도시된 바와 같이, 프로세스(3600)는 (단계 3605에서) 문서의 부분을 수신한다. 프로세스는 그 다음 (단계 3610에서) 문서의 요소들의 위치를 식별한다. 일부 실시예들에서, 요소들은 문자, 글리프, 이미지, 라인, 그림, 박스, 셀, 마진 및/또는 다양한 다른 콘텐츠 요소들을 포함한다. 일부 실시예들에서, 요소들의 위치들은 하나 이상의 위치 좌표 성분을 결정 및/또는 이를 요소들로 할당하는 것을 포함한다. 일부 실시예들에서, 요소들의 위치들은 순서대로 정렬된다. 예를 들어, 문자들의 수평 간격을 분석하는 경우, 문자들은 문자들의 각 라인에 대한 수평 좌표의 오름 차순으로 정렬된다. 일부 실시예들에서, 요소들의 위치 좌표 값들은 요소들 간의 간격과 연관되는 것이 바람직하고, 위치 값들은 요소의 폭/길이에 대해 보상된다. 예를 들어, 요소들의 정렬된 순서의 n 번째 위치 내의 요소의 보상된 수평 좌표(x 좌표)를 결정하는 경우 다음의 식이 사용된다.
Figure 112011059875910-pct00001
X'n는 보상된 위치 좌표 값이고, Xn은 본래의 위치 좌표 값이고, Wi은 i번째 위치의 요소의 폭이다. 일부 실시예들에서, 요소의 폭은 자신이 나타내는 문자, 폰트 크기, 문자의 스타일링 등에 기초한다. 일부 실시예들은 각 문자에 대한 알려진 앵커 좌표들을 이용하고, 각 특정 문자의 폭으로 이 특정 문자에 대한 좌표를 조정함으로써 보상된 위치 좌표 값을 결정한다.
다음으로, 프로세스는 (단계 3615에서) 인접 요소들의 위치들 간의 일차(first-order) 차이를 결정한다. 일부 실시예들에서, 적어도 하나의 동일한 위치 좌표 성분 값을 갖는 하나의 요소 및 또 다른 요소가 적어도 하나의 다른 위치 좌표 성분 값에서 서로 옆에 있도록 정렬되면 하나의 요소는 또 다른 요소에 인접한다. 예를 들어, 두 글리프가 동일한 텍스트 라인에 속하고 이들 사이에 다른 글리프가 존재하지 않으면 이 두 글리프는 서로 인접한다. 일부 실시예들에서, 요소들의 대응하는 위치 좌표 성분 값들 간의 차이가 제한 값 아래에 있거나 범위 값 내에 있는 경우 두 요소들은 적어도 하나의 동일한 위치 좌표 성분을 갖는다. 다양한 실시예들에서, 하나의 요소 및 또 다른 요소가 순서 및/또는 요소들의 식별된 위치와 연관된 구조에 있어 서로 연이어 있는 경우 하나의 요소는 또 다른 요소에 인접한다. 일부 실시예들에서, 위치들 간의 일차 차이는 폭/길이 보상 위치 좌표 값들 간의 차이이다. 예를 들어, 보상된 수평 좌표의 정렬된 순서의 n번째 및 n+1번째 위치 내의 인접하는 요소들에 대한 보상된 수평 좌표(x 좌표) 값들 간의 차이를 결정하는 경우, 일부 실시예들에서 다음의 식이 사용된다.
Figure 112011059875910-pct00002
일부 실시예들에서, 일차 차이는 콘텐츠 내의 글리프들 간의 틈 간격과 연관된다.
다음으로, 프로세스(3600)는 (단계 3620에서) 일차 차이들을 정렬시킨다. 일부 실시예들에서, 일차 차이를 정렬하는 것은 일차 차이들을 오름 차순으로 정렬시키는 것을 포함한다. 일부 실시예들에서, 일차 차이들을 정렬시키는 것은 가중치를 하나 이상의 일차 차이로 할당하고 적어도 부분적으로 가중치를 이용하여 일차 차이들을 정렬시키는 것을 포함한다. 예를 들어, 일부 실시예들에서, 실제 글리프 간격은 사용되는 폰트 및 크기, 디폴트 글자 간격, 및 폰트 파일과 함께 저장되는 커닝(kerning) 값들의 테이블을 포함하는 폰트 메트릭을 고려했을 때 각 특정 글리프들의 세트에 대한 예상 글리프 간격에 의해 나누어진다. 실제 대비 예상 간격의 이 비율은 증가하는 값 형태로 정렬되고, 이 비율의 값들은 차이 클러스터링 방법의 나머지에 대해 일차 차이들을 대신하여 사용된다.
프로세스는 그 다음 (단계 3625에서) 정렬된 일차 차이들 간의 이차 차이들을 결정한다. 예를 들어, 일차 차이들의 정렬된 순서의 i번째 및 i+1번째 위치 내의 일차 차이들 간의 이차 차이를 결정하는 경우, 다음의 식이 사용된다.
Figure 112011059875910-pct00003
Δ2Xi는 i번째 이차 차이이고, ΔX(i)는 정렬된 일차 차이들의 i번째 위치 내의 일차 차이이며, ΔX(i+1)는 동일하게 정렬된 일차 차이들의 i+1번째 위치 내의 일차 차이이다. 일부 실시예들에서, 이차 차이들은 글리프들의 간격 간의 차이들과 연관된다.
다음으로, 프로세스(3600)는 (단계 3630에서) 이차 차이들을 분석하여 클러스터 레벨들의 수를 결정한다. 일부 실시예들에서, 이차 차이들을 분석하는 것은 결정된 이차 차이들을 정렬시키는 것을 포함한다. 일부 실시예들에서, 이차 차이들을 정렬시키는 것은 이차 차이들을 오름 차순으로 정렬시키는 것 및/또는 이차 차이들을 증가하는 이차 차이 값들의 순으로 구성하는 것을 포함한다. 일부 실시예들에서, 이차 차이를 정렬시키는 것은 가중치를 하나 이상의 이차 차이에 할당하는 것을 포함한다. 일부 실시예들에서, 이차 차이를 정렬시키는 것은 이차 차이들을 하나 이상의 그룹으로 그룹화하는 것을 포함한다. 일부 실시예들에서, 이차 차이들은 각각 그룹 간 차이 또는 그룹 내 차이로 분류된다.
그룹 내 차이들은 상대적으로 작은 이차 차이 값들로 연관되고 동일한 클러스터링 그룹 내의 일차 차이들의 이차 차이들을 나타낼 수 있다. 그룹 내 차이의 예는 사람이 동일한 워드 내의 글자들 사이의 문자 폭 보상 간격 내에서 찾도록 예상되는 상대적으로 작은 변형이다. 그룹 간 차이들은 상대적으로 큰 차이 값들과 연관되고 상이한 클러스터링 그룹들 간의 일차 차이들의 이차 차이들을 나타낼 수 있다. 그룹 간 차이의 예는 두 워드 간의 간격 및 동일한 워드 내의 두 글자 간의 간격 간의 상대적으로 큰 차이이다.
일부 실시예들에서, 이차 차이들의 그룹 내부 및 그룹 간 값들을 분류하는 것은 2-평균 클러스터 분석을 정렬된 이차 차이 값들에 적용하여 달성된다: 구체적으로, {p1, … , pN}을 오름 차순의 {Δ2X1, …. , Δ2XN}이 되도록 한다. 마찬가지로, 두 개의 데이터 값들의 클러스터를 구분하는데 충분한 클러스터 분석의 임의의 다른 기술이 정렬된 이차 차이 값들에 적용될 수 있다. 그룹 내 차이들은 그 다음 제1 클러스터 C1 = {pi | a1 ≤ pi < a2}에 있고, 그룹 간 차이들은 제 2 클러스터 C2={pi | a2 ≤ Pi < a3} 내에 있으며, a1<a2<a3이다. 일부 실시예들에서, 위에서 설명된 바와 같이 분석된 이들의 공간적 관계에 기초하여, 콘텐츠 요소들이 정렬되도록 결정되는 레벨들의 수는 차이 클러스터 분석을 통해 찾아진 그룹 간 차이들의 수보다 하나 많다. 예를 들어, 두 개의 그룹 간 차이들이 존재하는 경우, 구조적 레벨들의 수는 3개이다. 단순한 예를 들면, 텍스트의 단일 라인을 포함하는 워드들을 형성하는 문자들을 고려해보자. x-x방향의 문자들 간의 간격 내의 일차 차이들은 문자 간격 및 워드 간격 간의 이차 차이(하나의 그룹간 차이)를 가져와, 구조의 두 레벨을 나타낸다(워드 및 라인). 텍스트가 두 칼럼 내에 있었던 경우, 두 그룹 간 차이 전체에 대해 (워드 간격 및 칼럼 간격 간의) 추가적인 이차 차이가 검출되어 x 방향의 3개의 구조적 레벨들을 나타낸다(워드, 라인 및 칼럼). y 방향으로 분석을 반복하고 결과들을 결합하는 것은, 특정 콘텐츠에 적용될 수 있는 경우, 일부 실시예들에서 문자들 및 문자들의 그룹들 간의 간격에서 명확해지는 임의의 추가적인 구조적 레벨들(예컨대, 단락 등)을 식별한다.
프로세스는 그 다음 (단계 3635에서) 각 클러스터 레벨의 특성들을 결정한다. 그 다음 프로세스는 종료한다. 일부 실시예들에서, 특성을 결정하는 것은 어느 일차 차이(및/또는 어느 범위의 일차 차이)가 어느 클러스터 레벨과 연관되는지를 판단하는 것을 포함한다. 일부 실시예들에서, 특성을 결정하는 것은 클러스터 레벨과 연관된 일차 차이들과 연관된 통계적 값을 연산하는 것을 포함한다. 예를 들어, 클러스터 레벨과 연관된 일차 차이들의 일부의 평균, 최소, 최대값을 결정함으로써 콘텐츠 내의 글리프들 간의 평균, 최소 및 최대 간격이 결정될 수 있다.
L이 클러스터링의 레벨들의 수가 되도록 하자. 일부 실시예들에서, L은 이차 차이들의 제2 클러스터 내의 지점들의 수를 세고 1을 추가함으로써 연산된다. 다음으로, 각 레벨에 대응하는 일차 차이들의 그룹들이 식별될 수 있고, 보상된 Xn' 값들의 클러스터들이 각 레벨에서, 예컨대 다음의 두 방식 중 하나로 식별될 수 있다.
하나의 가능성은 일차 차이들에 L-평균 클러스터 분석을 수행하는 것이다. 이에 따른 L개의 클러스터들은 각 레벨에 대응하는 일차 차이들의 그룹들이다. 다음으로 레벨 m에서 Xn'의 클러스터들의 수 Km은 일차 차이들에 1을 더한 값의 (m+1)번째, (m+2)번째, … 및 L번째 클러스터들 내의 지점들의 수를 더하여 연산된다. 마지막으로, Km-평균 분석을 보상된 Xn' 값들에 수행하여 레벨 m에서 Km 클러스터들을 생산한다.
각 일차 차이 ΔXn = Xn +1' - Xn'를 처음에 연산하는 경우, 두 번째 가능한 방법은 해당 차이를 생산하도록 감해지는 연속적인 X 값들의 쌍 중 하나를 식별하는데 사용될 수 있는 인덱스 n과 함께 이의 값을 저장하는 것이다. 이 값 및 인덱스 참조를 단일 "일차 차이" 데이터 구조에 저장한다. 마찬가지로, 각 이차 차이를 원래 연산하는 경우, 이의 값을 해당 차이를 생산하도록 감해지는 값들을 갖는 연속적인 "일차 차이" 데이터의 쌍 중 하나를 식별하는데 사용될 수 있는 지표 참조와 함께 저장한다. 이제, 제2 클러스터 내에 있는 각 이차 차이에 대해(즉, 각 그룹 간 차이에 대해), 이의 인덱스 참조를 이용하여 일차 차이들 내의 분할 지점을 식별한다. 이는 인덱스가 별도의 클러스터들 내로 분할되는 일차 차이 값들의 쌍을 식별하는 것을 의미한다. 이러한 방식으로 분할하는 것은 원래의 데이터 내의 클러스터링의 L개의 레벨들에 대응하는 일차 차이들의 L개의 클러스터들을 생산한다. 이제, 레벨 n에서의 Xn 값들의 클러스터들이 다음과 같이 식별된다: 일차 차이들의 (m+1)번째, (m+2)번째, …, 및 L번째 클러스터 내의 각 일차 차이 데이터에 대해, 인덱스 참조를 Xn' 값들 내의 분할 지점으로 사용한다.
도 37은 차이 클러스터링의 예를 도시한다. 일부 실시예들에서, 도 37의 예는 도 36의 프로세스(3600)와 연관된다. 일차 차이 값들(3705, 3710 및 3715)의 그룹들이 일차 차이 값들과 연관된 라인 상의 가장 낮은 값으로부터 가장 높은 값의 순으로 구성된다. 각 지점은 상이한 값, 예컨대 텍스트 문자 또는 다른 글리프로부터 인접하는 것으로의 거리와 연관되고, 도 37에서 지점들은 예를 명확히 도시하기 위해 서로의 위에 중첩되지 않는다.
설명된 예에서, 데이터는 글리프들 간의 수평 간격과 연관된다. 일차 차이 값들을 정렬시킴으로써, 예는 일차 차이 값들(3705, 3710 및 3715)의 세 그룹들을 도시한다. 일차 차이 값 그룹(3705)은 워드들을 구성하는 글리프들 간의 간격과 연관된다. 일차 차이 값 그룹(3710)은 워드들 간의 간격과 연관된다. 일차 차이 값 그룹(3715)은 칼럼들 간의 간격과 연관된다. 인접하는 일차 차이 값들의 각 쌍에 대하여, 이차 차이 값(즉, 하나의 일차 차이 및 인접하는 일차 차이 간의 차이)이 결정되고 이차 차이 값들과 연관되는 라인 상의 오른 차순으로 구성된다. 이차 차이 값 그룹(3720, 3725 및 3730)은 각각 이차 차이 값들과 연관되는 하나 이상의 지점을 포함한다. 일부 실시예들에서, 지점(3725)은 이차 차이 값 그룹을 포함하는 연관된 이차 차이 지점들의 그룹의 멤버이다.
일부 실시예들에서, 지점(3730)은 이차 차이 값 그룹을 포함하는 연관된 이차 차이 지점들의 그룹의 멤버이다. 일부 실시예들에서, 3720은 하나의 클러스터로 식별되고 3725는 3730과 함께 두번째 클러스터로 식별된다. 동일한 단일 일차 차이 값 그룹 내의 일차 차이 값들 간의 이차 차이 값들(그룹 내 차이들)일차 차이 값들은 이차 차이 값 그룹(3720)에 포함된다. 텍스트 문서에서, 예를 들어, 통상적으로 워드 내의 문자들 간의 또는 상이한 워드들의 쌍 간의 간격 내의 문자 폭 보상 간격은 매우 조금만 변한다. 그룹(3705 및 3710) 내의 그룹 내 인접 지점들 간의 이차 차이는 지점(3725)에 포함된다. 그룹(3710 및 3715) 내의 그룹 간 인접 지점들 간의 이차 차이가 지점(3730)에 포함된다. 이 예에서, 두 개의 그룹 간 이차 차이 값들이 존재하기 때문에, 둘에 하나를 더한(셋의) 그룹 레벨이 존재한다(이 예에서, 워드들, 문장들 칼럼 내의 텍스트 라인 상의 이들의 일부, 및 칼럼들). 그룹(3705) 내의 일차 차이 값들의 최소 및 최대값을 결정함으로써 워드들을 구성하는 글리프들 간의 최소 및 최대 간격이 결정될 수 있고, 유사하게 그룹(3710 및 3715)이 각각 워드 간격 및 칼럼 간격을 결정하는데 사용될 수 있다.
일부 실시예들에서, 각 그룹 레벨과 연관된 최소 및 최대 간격이, 이를테면 워드들을 포함하는 문자들의 그룹들을 식별함으로써 콘텐츠 요소들(예컨대, 글리프들)을 그룹화하고, 워드들을 칼럼 내의 텍스트 라인들로 그룹화하는 등에 사용된다. 클러스터 분석으로부터 결정된 데이터를 이용하여, 글리프들이 결정된 그룹 레벨들로 그룹화된다. 부분적으로는 콘텐츠 구조 또는 분석되고 있는 요소들의 다른 집합 내에 얼마나 많은 그룹 레벨들이 있는지를 미리 알 필요가 없기 때문에, 임의의 콘텐츠에 대하여 빠르고 자동적으로 분석을 수행하는 것이 가능하다. 그룹 레벨들의 수에 관계 없이, 레벨들의 수는 두 프로세싱 단계들에서만 결정된다. 그룹(3705) 내의 일차 차이 값들의 평균을 결정함으로써, 워드들을 구성하는 글리프들 간의 평균 간격이 결정될 수 있다. 마찬가지로, 다른 통계적 양이 워드들을 구성하는 글리프들에 대해 결정될 수 있다. 유사하게, 그룹(3710 및 3715) 내의 일차 차이 값들의 분석이 워드 간격 및 칼럼 간격에 관한 통계적 양들을 결정하는데 사용될 수 있다.
C. 라인 분리
일부 실시예들은 워드 및 조각 분해 정보가 생성된 후 텍스트 라인들을 분리한다. 예컨대, 텍스트 라인들은, 두(또는 그 이상의) 섹션들 내의 텍스트가 아마도 함께 읽히도록 의도되지 않기 때문에 텍스트 라인이 하나보다 많은 칼럼에 걸치는 곳에서 분리된다. 일부 실시예들은 텍스트 라인들을 분리하기 위해 차이 클러스터링으로부터의 정보(예컨대, 조각 틈들 등)와 함께 위의 섹션 III에서 설명된 프로세스들로부터 도출되는 가이드 및 여백 정보를 사용한다.
도 38은 텍스트의 라인들을 분리하기 위한 일부 실시예들의 프로세스(3800)를 개념적으로 도시한다. 프로세스(3800)의 부분들이 도 39와 함께 설명될 것이다. 도 39는 페이지(3900) 상의 라인들이 분리되어야 하는 곳의 식별을 보여주는 시퀀스를 도시한다. 도 38에 도시된 바와 같이, 프로세스(3800)는 (단계 3805에서) 텍스트 라인들, 가이드 및 여백 정보, 및 문서의 일부에 대한 조각 분해 정보를 수신한다. 텍스트 라인 정보는 일부 실시예들에서 프로세스(3300)의 출력이고, 가이드 및 여백 정보는 일부 실시예들에서 프로세스들(2100, 2500 및 2600)의 출력이다. 조각 분해(또는 조각 틈) 정보는 일부 실시예들에서 위에서 언급된 미국 특허 공개공보 제2007/0250497호에서 설명된 차이 클러스터링의 출력들 중 하나이다. 일부 실시예들에서, 문서 부분은 페이지의 전체 문서, 섹션, 페이지 또는 구역이다.
다음으로, 프로세스는 (단계 3810에서) 이들의 기준선들의 y 좌표에 기초하여 수신된 텍스트 라인들을 정렬시킨다. 페이지의 맨 아래에서 시작하여, 프로세스는 (단계 3815에서) 가장 아래의 평가되지 않은 텍스트 라인을 선택하고 (단계 3820에서) 선택된 라인 내의 잠재적 분리(split)를 식별한다. 일부 실시예들은 잠재적 분리를, (1)차이 클러스터링에 의해 정의된 조각 간격이거나 (2)가이드 또는 이를 통과하는 여백을 갖는 라인 내의 두 워드들 간의 임의의 틈으로 정의한다. 일부 실시예들은 잠재적 분리에 대해 둘 중 하나, 또는 상이한 정의들만을 사용한다.
프로세스는 그 다음 (단계 3822에서) 임의의 잠재적 분리들이 식별되는지 여부를 판단한다. 식별되는 것이 없는 경우, 프로세스는 아래에서 설명되는 단계(3845)로 진행한다. 그렇지 않으면, 프로세스는 (단계 3825에서) 현재 선택된 텍스트 라인으로부터 잠재적 분리를 선택한다. 프로세스는 그 다음 (단계 3830에서) 잠재적 분리의 x 간격이 이전 텍스트 라인으로부터의 임의의 잠재적 분리의 x 간격과 중첩하는지 여부를 판단한다. 평가된 제1 텍스트 라인은 이전 텍스트 라인을 갖지 않을 것이고, 따라서 중첩하는 잠재적 분리들이 없게 된다. 현재 선택된 잠재적 분리의 x 간격이 이전 라인으로부터의 잠재적 분리의 x 간격과 중첩하지 않는 경우, 프로세스는 위에서 설명되는 단계(3822)로 진행한다. 그렇지 않으면 프로세스는 (단계 3835에서) 중첩하는 잠재적 분리들을 연관시킨다. 프로세스는 그 다음 위에서 설명된 단계(3822)로 진행한다.
더 이상 평가되지 않은 잠재적 분리가 없는 경우, 프로세스는 (단계 3845에서) 평가할 라인들이 더 있는지 여부를 판단한다. 더 많은 라인들이 남아 있는 경우, 프로세스는 단계(3815)로 진행하여 다음 라인 내의 잠재적 분리들을 식별하고 이들을 중첩하는지 테스트한다.
모든 라인들이 평가된 경우, 문서 부분 내의 모든 잠재적 분리들이 식별되고 연관된다. 프로세스는 그 다음 거짓 양의 값들(즉, 텍스트의 라인을 실제로 분리하지 말아야 하는 잠재적 분리들)을 제거하는 여러 작업들을 수행한다. 프로세스는 (단계 3847에서) 잠재적 분리들의 임의의 그룹들이 식별되었는지 여부를 판단한다. 아무것도 식별되지 않았으면, 프로세스가 종료된다. 그렇지 않으면, 프로세스는 (단계 3850에서) 연관된 잠재적 분리들의 그룹을 선택하고 (단계 3855에서) 선택된 그룹의 잠재적 분리들을 완전히 통과하는 직사각형 스트립을 정의한다. 일부 실시예들에서, 이 스트립은 선택된 그룹 내의 잠재적 분리들 모두의 x 간격들의 교차점인 x 간격을 갖는다(즉, 잠재적 분리들 중 두 개가 겨우 겹치는 스트립에 대한 x 간격은 매우 얇다).
도 39는 텍스트의 여러 라인들을 갖는 페이지(3900)를 도시한다. 텍스트의 라인들 중 대부분은 두 칼럼들 사이에서 나뉜다. 그러나, 기준선들은 두 칼럼에서 동일하다. 따라서, 제1 칼럼으로부터의 각 라인은 라인 분리 프로세스 전에 제2 칼럼으로부터의 라인과 동일한 라인에 있다. 도 39는 또한 연관된 잠재적 분리들의 4개의 직사각형 스트립들(3905, 3910, 3915 및 3920)을 도시한다.
선텍된 그룹에 대한 직사각형 스트립을 정의한 후에, 프로세스는 (단계 3860에서) 스트립이 텍스트 라인들의 임계 수보다 적게 걸치는지 여부를 판단한다. 하나 또는 매우 적은 텍스트 라인들에 걸치는 스트립들은 읽기에 있어 실제 분리를 나타낼 가능성이 별로 없지만, 대신 라인 내의 탭들 또는 기타 끊기지 않는 틈들이 될 수 있다. 때때로 조각 틈들은 워드들 간의 틈이 양쪽 맞춤 텍스트로 인해 매우 큰 곳에서 차이 클러스터링에 의해 찾아진다. 스트립이 라인들의 임계 수보다 더 적은 수에 걸치는 경우, 프로세스는 (단계 3865에서) 잠재적 분리들의 목록으로부터 그룹을 제거하고 이 위치들에서 텍스트 라인들을 분리하지 않을 것이다. 프로세스는 그 다음 아래에서 설명되는 단계(3890)로 진행한다. 페이지(3900) 상에서, 스트립들(3910 및 3920)을 구성하는 잠재적 분리들은 이들이 칼럼 틈이 될 정도로 충분한 분리들을 갖지 않기 때문에 제거된다. 더욱이, 잠재적 분리들은 탭들이거나 큰 워드 틈들이다.
스트립이 적어도 임계 수의 라인들에 걸치는 경우, 프로세스는 (단계 3870에서) 현재 스트립이 또 다른 스트립의 임계 거리 내에 있는지 여부를 판단한다. 일부 실시예들은 이미 테스트되었고 또 다른 스트립이 현재 스트립의 임계값 내에 있는지 여부를 판단하는 경우 아직 제거되지 않은 이전 스트립들을 찾기만 한다. 현재 스트립이 또 다른 스트립의 임계 거리 내에 있는 경우, 프로세스는 (단계 3875에서) 수직으로 더 짧은 스트립을 갖는 그룹을 제거한다(라인들이 모두 동일한 일부 경우들에서, 이는 더 적은 텍스트 라인들에 걸치는 스트립이다). 프로세스는 그 다음 아래에서 설명되는 단계(3890)로 진행한다.
페이지(3900)의 스트립들(3905 및 3915)은 모두 단계(3860)를 통과하기에 충분한 텍스트 라인들을 걸치는 것으로 충족된다. 그러나, 일부 실시예들에서 스트립들은 서로 너무 가까워서 유지될 수 없다. 따라서, 3915가 두 스트립들 중 긴 것이기 때문에 스트립(3905)를 구성하는 잠재적 분리들의 그룹이 제거된다. 이 프로세스는 일부 실시예들에서 목록 항목들 또는 숫자가 이들이 참조하는 아이템들로부터 분리되지 않도록 할 뿐만 아니라 다른 잠재적으로 문제가 되는 분리들을 막는다.
현재 스트립이 또 다른 스트립에 너무 가깝지 않은 경우, 프로세스는 (단계 3880에서) 스트립이 조각 틈들이 아닌 열 내의 연이은 잠재적 분리들의 임계 수를 포함하는지 여부를 판단한다. 일부 실시예들에서, 워드 가장자리들이 우연히 정렬되는 가이드 및/또는 여백을 식별하는 것이 가능하다. 이는 특히 텍스트가 단일 스페이스(monospace) 폰트(예컨대, Courier체)로 디스플레이되는 경우 그러하다. 스트립이 적어도 이 임계 수의 연이은 비조각 틈 잠재적 분리들을 포함하는 경우, 프로세스는 (단계 3885에서) 잠재적 분리들의 목록으로부터 그룹을 제거하고 이 위치들에서 텍스트 라인들을 분리하지 않을 것이다.
다음으로, 프로세스는 (단계 3890에서) 다양한 임계값 요건들에 대해 테스트되지 않은 잠재적 분리들의 더 많은 그룹들이 있는지 여부를 판단한다. 더 많은 그룹들이 남아 있으면, 프로세스는 단계(3850)로 진행하여 잠재적 분리들의 다음 그룹을 선택하고 평가한다. 그렇지 않고, 모든 그룹이 평가되었으면, 프로세스는 (단계 3895에서) 제거되지 않은 임의의 분리들을 이용하여 텍스트 라인들을 분리한다. 프로세스는 그 다음 종료된다. 페이지(3900)에 대해 설명된 경우에서, 사용되는 유일한 분리들은 텍스트의 두 칼럼을 분리하는 중심부의 것들이다.
프로세스(3800)가 세 개의 특정 테스트들(단계 3860, 3870 및 3880)을 이용하여 잠재적 분리들의 그룹들을 제거하는 것으로 설명되는 반면, 일부 실시예들은 이들 중 서브세트만을 이용하고, 다른 실시예들은 고려대상으로부터 잠재적 분리들을 제거하기 위해 나타나지 않은 다른 테스트들을 이용한다.
D. 단락 식별
일부 실시예들에서, 텍스트의 라인들이 일단 병합되고 분리되면, 라인들이 단락들로 그룹화된다. 도 40은 텍스트 라인들을 단락들로 그룹화하기 위한 일부 실시예들의 프로세스(4000)를 개념적으로 도시한다. 프로세스(4000)의 부분들이 도 41과 함께 설명된다. 도 41은 문서의 페이지(4100) 상의 단락들의 식별을 도시한다. 도 40에 도시된 바와 같이, 프로세스(4000)는 (단계 4005에서) 문서의 일부에 대한 텍스트 라인들을 수신한다. 텍스트 라인들은 프로세스(4000)가 수행되기 전에 일부 실시예들에서 이미 (예컨대, 프로세스(3300)에 의해) 병합되었고 (예컨대, 프로세스(3800)에 의해) 분리되었다. 일부 실시예들에서, 문서 부분은 전체 문서, 문서의 섹션, 페이지, 구역 등이다.
프로세스는 (단계 4007에서) 문서 부분에 임의의 라인들이 있는지 여부를 판단한다. 라인이 없는 경우, 프로세스는 종료된다. 그렇지 않으면, 수신된 문서 부분의 맨 위에서 시작하여, 프로세스는 (단계 4010에서) 문서 부분 내의 제1 평가되지 않은 텍스트 라인을 선택한다. 프로세스는 그 다음 (단계 4015에서) 선택된 라인 아래에 하나 보다 많은 텍스트 라인이 있는지 여부를 판단한다. 일부 실시예들에서 동작(4015)을 위하여 아래 쪽의 라인이 선택된 라인 아래에 있는 것으로 간주되도록 서로의 특정한 수직 거리 내에 라인들이 있어야만 한다. 일부 실시예들은 텍스트 라인들이 동일한 단락에 속하는지 여부에 관한 판단을 하기 위해 적어도 세 개의 텍스트 라인들을 필요로 한다. 일부 실시예들에서, 두 간격들(즉, 제1 및 제2 텍스트 라인들 간의 간격 및 제2 및 제3 텍스트 라인들 간의 간격)이 비교를 하기 위해 필요하기 때문에 이 요건이 부가된다.
선택된 텍스트 라인 아래에 둘 이상의 라인들이 있는 경우, 프로세스는 아래에서 설명되는 단계(4030)로 진행한다. 그렇지 않으면, 두 라인들보다 적은 것이 선택된 텍스트 라인 아래에 있는 경우, 프로세스는 (단계 4020에서) 선택된 라인을 단락 자체에 놓는다. 프로세스는 그 다음 (단계 4025에서) 문서 부분에 더 많은 라인들이 있는지 여부를 판단한다. 더 이상의 라인이 없는 경우(예컨대, 문서 부분 내에 단지 하나의 텍스트 라인이 있는 경우), 프로세스는 종료된다. 그렇지 않고, 더 많은 라인들이 있는 경우, 프로세스는 단계(4010)로 진행하고 다음 텍스트 라인을 선택한다.
단계(4015)에서 단계(4010)에서 선택된 라인(즉, 현재 단락 내의 첫번째 라인) 아래에 둘 이상의 텍스트 라인이 있는 경우, 프로세스는 (단계 4030에서) 선택된 텍스트 라인 아래의 다음 두 라인들을 식별한다. 프로세스는 그 다음 (단계 4035에서) 간격 및 정렬이 세 라인들 사이에서 일정한지 여부를 판단한다. 일부 실시예들에서, 이 결정은 제1 라인에서 제2 라인으로의 수직 거리가 제2 라인에서 제3 라인으로의 수직 거리와 동일한지 여부를 검사하는 것을 수반한다. 일부 실시예들은 텍스트 라인들의 기준선들을 이용하여 수직 간격을 결정한다. 일부 실시예들에서, 정렬 차이들은 라인들 중 하나가 들여쓰기로 시작하거나, 다른 라인들의 왼쪽에서 종료하는 경우 식별되고, 따라서 단락의 시작 또는 종료의 가능성에 대해 신호를 보낸다.
간격 및 정렬이 일정하지 않은 경우, 프로세스는 (단계 4040에서) 휴리스틱 룰을 적용하여 식별된 라인들 중 하나를 선택된 제1 라인을 갖는 단락에 부가할지 여부를 판단한다. 예를 들어, 일부 실시예들에서, 처음 두 라인들이 서로 가깝고 제3 라인이 아래에 멀리 있으면, 처음 두 라인들은 하나의 단락에 놓이고 제3 라인은 다음 단락의 시작이 된다. 유사하게, 일부 실시예들에서, 제1 라인이 제2 및 제3 라인으로부터 멀리 있는 경우, 제1 단락은 한 줄 단락이고 다음 단락은 제2 라인에서 시작한다. 유사한 룰이 라인들 간의 정렬 차이들에 대한 일부 실시예들에 사용된다. 휴리스틱 룰들을 적용한 후에, 프로세스는 단계(4010)으로 진행하여 다음 평가되지 않은 텍스트 라인(즉, 단락으로 아직 지정되지 않은 다음 라인)을 선택하고 새로운 단락을 시작한다.
간격 및 정렬이 세 라인들 간에서 일정한 경우, 프로세스는 (단계 4045에서) 모든 세 라인을 동일한 단락에 위치시킨다. 일부 실시예들은 단락의 간격 및 정렬 속성을 또한 식별한다. 예컨대, 일부 실시예들은 단락들을 왼쪽 정렬, 오른쪽 정렬, 양쪽 맞춤, 중앙 정렬 등으로 식별한다. 일부 실시예들은 열린 복수의 가능성을 남겨둔다(예컨대, 들여쓰기된 제1 라인을 갖는 단락, 오른쪽 정렬되거나 이에 매우 가까운 모든 세 라인들, 및 왼쪽 정렬된 아래의 두 라인들은 왼쪽 정렬, 오른쪽 정렬, 또는 양쪽 정렬의 세 개 중 임의의 하나가 될 수 있다.)
새로운 단락의 시작을 식별하는 최초 단계 후에, 프로세스(4000)는 라인들을 단락에 추가 시도한다. 일부 실시예들에서, 라인 추가는 단락의 시작을 구성하는 세 라인들로부터 결정되는 간격 및 정렬 속성들에 기초한다. 다른 실시예들에서, 단락에 대한 간격 및 정렬 속성들과 충돌하지 않는 라인들이 추가되기 때문에, 간격 및 정렬 속성들은 임의의 추가적인 증거에 기초하여 개선된다.
다음으로, 프로세스는 (단계 4047에서) 문서 부분 내에 더 많은 라인들이 있는지 여부를 판단한다. 더 많은 라인들이 없는 경우(즉, 문서 부분이 정확히 3개의 라인을 갖는 경우), 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 4050에서) 문서 부분 내의 다음 텍스트 라인을 식별한다. 프로세스는 그 다음 (단계 4055에서) 현재 단락 및 식별된 다음 라인 간에 간격 또는 정렬 불일치가 있는지 여부를 판단한다. 불일치가 있는 경우, 프로세스는 단락을 종료하고 위에서 설명된 단계(4010)로 진행한다. 이러한 경우에서, 현재 불일치된 라인이 단계(4010)에서 선택된 라인이 될 것이다.
그렇지 않고, 간격 및 정렬이 바르게 배열되어 있으면, 프로세스는 (단계 4060에서) 라인을 현재 단락에 추가한다. 프로세스는 그 다음 위에서 설명된 단계(4047)로 진행한다. 일부 실시예들에서, 식별된 다음 텍스트 라인이 단락의 속성들 중 하나(예컨대, 양쪽 맞춤)에 맞지 않는 경우 정렬 불일치가 발견된다. 유사하게, 만약 단락 내의 마지막 라인 및 다음 라인 사이의 간격이 단락의 것에 비해 증가되면, 간격 불일치가 일부 실시예들에서 발견된다.
일부 실시예들은 다른 중단 조건들(예컨대, 단락에 추가되지 않는 식별된 라인을 가져오는 조건들)을 사용한다. 예를 들어, 식별된 라인 상의 첫번째 라인이 왼쪽 정렬된 단락의 마지막 라인의 끝에 있는 흰 공간에 맞는지를 인식한다. 맞는 경우, 새로운 라인이 현재 단락의 일부라면, 워드가 새로운 라인을 시작하기 보다는 마지막 라인의 끝에서의 흰 공간에 있게 되기 때문에 새로운 라인은 다음 단락의 일부로 간주된다. 유사하게, 일부 실시예들은 인덴트(indent)가 새로운 단락을 나타내는 것으로 인식한다. 일부 실시예들의 제3 조건은 식별된 라인이 균일하게 스타일처리되고(예컨대, 모두 굵은 글자, 또는 더 큰 폰트 크기) 이전 라인 상의 임의의 문자의 스타일과 상이한지 여부이다.
일단 프로세스(4000)가 완료되었으면, 문서 부분 내의 모든 단락들이 식별되고, 모든 텍스트 라인이 단락으로 할당된다. 일부 실시예들은 그 다음 단락들을 이용하여 칼럼 및 레이아웃들을 식별한다.
도 41은 4개의 단락을 갖는 페이지(4100)를 도시한다. 프로세스(4000)를 이 페이지(이 페이지는 문서일 일부임)에 적용하면 단락(4105, 4110, 4115 및 4120)을 식별한다. 일부 실시예들의 프로세스는 처음 세 라인을 함께 그룹화하고, 6번째 라인(4125)이 간격 및 정렬 불일치를 가질 때까지 4번째 및 5번째 라인들을 추가하며, 단락(4105)을 5개의 라인에 둠으로써 시작된다. 프로세스는 그 다음 6번째 라인으로 시작하고, 아래의 두 라인들 간의 간격 및 정렬 불일치를 인식한다. 라인 6이 라인 7 및 8이 서로 떨어져 있는 것보다 더 많이 라인 7 및 8로부터 떨어져 있기 때문에 라인 6은 단락(4110) 전체이고 다음 단락(4115)은 라인 7로 시작한다. 단락들(4115 및 4120)이 유사하게 식별된다.
E. 칼럼 및 레이아웃 식별
일부 실시예들은 단락들을 식별한 후에 단락들을 칼럼 및 레이아웃에 위치시킨다. 일부 실시예들에서, 칼럼은 텍스트가 위에서 아래로 조리 있게 읽히는 단락들의 수직으로 정렬된 그룹이다. 일부 실시예들에서 레이아웃은 겹치지 않는 칼럼들의 집합이고 일부 실시예들에서 선형 레이아웃은 텍스트가 가장 왼쪽 칼럼의 맨 위로부터 가장 오른쪽 칼럼의 맨 아래로 조리 있게 읽히는 칼럼들의 수평으로 정렬된 그룹이다. 예를 들어, 일부 실시예들은 조각화되지 않은 텍스트 라인들을 갖지만 헤더 및 꼬리말이 없는 단순한 페이지를 하나의 칼럼으로 된 단일 선형 레이아웃으로 분류한다.
도 42는 일부 실시예들에서 문서의 일부의 칼럼 및 레이아웃을 식별하기 위한 프로세스(4200)를 개념적으로 도시한다. 프로세스(4200)가 도 43 내지 46과 함께 설명된다. 도 43 및 44는 두 상이한 페이지(4300 및 4400) 상의 단락들을 도시하고, 도 45 및 46은 각각 두 페이지(4300 및 4400)에 대한 흐름 그래프의 생성을 도시한다.
도 42에 도시된 바와 같이, 프로세스(4200)는 (단계 4205에서) 문서의 부분에 대한 단락들의 정보를 수신한다. 일부 실시예들에서 문서 부분은 전체 문서, 문서의 섹션, 페이지, 구역 등이다. 일부 실시예들에서 단락 정보는 위에서 설명된 프로세스(4000)를 이용하여 결정된다. 프로세스는 그 다음 선택할 단락이 있는지 여부를 판단한다. 없는 경우, 프로세스는 종료된다.
그렇지 않으면, 프로세스는 (단계 4210에서) 단락을 선택한다. 일부 실시예들에서, 문서 부분 내의 단락들이 순서대로 선택되어, 왼쪽 맨위에서 시작되는 반면, 다른 실시예들에서는 단락들이 랜덤 순서로 선택된다.
다음으로, 프로세스는 (단계 4215에서) 내부-순서(in-order), 외부-순서(out-order), 왼쪽 순서(left-order), 및 오른쪽 순서(right order) 뿐만 아니라 이들 값들 각각을 동반하는 단락들의 세트들을 계산한다. 단락 p의 외부-순서는 일부 실시예들에서 세트 B(p)를 이용하여 계산된다. 세트 B(p)는 처음에는 p와 수평으로 겹치는 (즉, x 좌표에 겹치는) 문서 부분 내의 단락 p 아래의 모든 단락들이다. 예를 들어, 도 43은 단락 P(4305)를 포함하는 11개의 단락들을 갖는 페이지(4300)를 도시한다. 세트 B(p)는 처음에는 {Q, R, S, T, U}이다. 다음으로, p에 가장 가까운 단락이 q로 식별되고, 단락 q와 겹치는 모든 단락들이 세트 B(p)로부터 수평으로 제거된다. 단락 P(4305)의 경우, 단락 Q(4310)가 단락 P에 가장 가깝고, 단락 R(4315), S(4320), T(4325) 및 U(4330)은 세트 B(p)로부터 제거된다. 이제, 세트 B(p)는 {Q}가 된다.
일부 실시예들은 그 다음 최초에 세트 B(p)내에 있었던 p에 다음으로 가장 가까운 단락에 대해 계속되고, 이 다음 가장 가까운 단락 아래에 있고 수평으로 겹치는 단락들을 B(p)로부터 제거한다. 다른 실시예들은 세트 B(p)에 남아 있는 p에 다음으로 가장 가까운 단락에 대해 계속하고, 이 단락과 수평으로 겹치는 단락들을 B(q)로부터 제거한다. 어떤 방식이든 도 43의 예에서, 단락 P(4305)에 대한 세트 B(p)는 {Q}이다. p의 외부-순서는 그 다음 세트 B(p)의 기수(cardinality)(즉, 요소들의 수)이다. 이는 B(p) 내의 각 단락에 대해 반복된다. 따라서, 이 경우에서 단락 P(4305)의 외부-순서는 1이다. 1보다 큰 외부-순서를 갖는 단락의 예로서, 단락 R(4315)에 대해, 세트 B(R)은 {S, X}이고, 따라서 단락 R(4315)의 외부-순서는 2이다.
단락 p의 내부-순서는 일부 실시예들에서 세트 A(p)를 이용하여 외부-순서와 유사하게 계산된다. 세트 A(p)는 p와 수평으로 겹치는 p위의 문서 부분 내의 최초의 모든 단락이다. 단락 p에 가장 가까운 단락이 단락 q로 선택되고, 단락 q와 수평으로 겹치는 단락들이 A(p)로부터 제거된다. 이는 그 다음 A(p) 내의 각 단락에 대해 반복된다. 페이지(4300) 예에서, 단락 P(4305)에 대한 세트 A(p)는 빈 세트인 반면, 단락 R(4315)에 대한 세트 A(r)는 {Q, W}이다. 단락 p의 내부-순서는 세트 A(p)의 기수(즉, 요소들의 수)이다.
단락 p의 왼쪽-순서 및 오른쪽-순서는 또한 일부 실시예들에서 세트 L(p)(동일한 제거 규칙들을 이용하여 p의 왼쪽 및 p와 수직으로 겹치는 단락들) 및 세트 R(p)(동일한 제거 규칙을 이용하여 p의 오른쪽 및 p와 수직으로 겹치는 단락들)를 이용하여 유사하게 계산된다. 일부 실시예들은 언어 방향이 위에서 아래인 것으로 (예컨대, 외부 수단에 의해) 결정된 경우 흐름 그래프들(아래 참조)에 대한 L(p) 및 R(p)를 이용한다. 페이지(4300)에 대해, 단락 P(4305)에 대한 세트 R(p)는 {V}인 반면, 단락 V(4335)에 대한 세트 L(V)는 {P}이다. 단락 R(4315)에 대한 세트들 L(R) 및 R(R)은 모두 비어 있다.
일단 내부-순서, 외부-순서, 왼쪽-순서 및 오른쪽 순서가 선택된 단락에 대해 계산되면, 프로세스(4200)는 (단계 4220에서) 다양한 값들이 계산되어야 하는 더 많은 단락들이 남아있는지 여부를 판단한다. 만약 더 많은 단락들이 남아 있으면, 프로세스는 단계(4210)로 진행하고 또 다른 단락을 선택한다.
그렇지 않고, 일단 값들이 모든 단락들에 대해 계산되면, 프로세스는 (단계 4225에서) 단락들에 대한 흐름 그래프를 생성한다. 일부 실시예들의 흐름 그래프는 평가되는 문서 부분 내의 각 단락이 노드가 되도록 생성된다. 방향이 정해진 가장자리가 단락 p에 대한 노드로부터 세트 A(p) 내의 단락들에 대한 각 노드로 그려진다. 일부 실시예들에서, 이는 세트 B(p) 내의 단락들에 대한 각 노드로부터 단락 p에 대한 노드로의 방향이 정해진 가장자리를 그리는 것과 동일한다. 도 45는 페이지(4300)에 대한 초기 흐름 그래프(4501)를 도시한다.
다음으로, 프로세스(4200)는 (단계 4230에서) 콜-아웃들을 식별한다. 일부 실시예들에서, 식별된 콜-아웃들이 흐름 그래프로부터 제거된다. 일부 실시예들에서, 콜-아웃은 페이지 상의 텍스트의 나머지와는 독립적인 순서로 읽혀지도록 의도되는 페이지 상의 텍스트 요소이다. 콜-아웃들의 일부 예들은 다른 요소들 헤더 및 꼬리말, 주석, 마진 노트, 관련 기사, 및 잡지 기사 내의 큰-폰트 인용문구들과 같은 다른 요소들 간에서 위치하는 다른 텍스트 블록들을 포함한다.
일부 실시예들은 텍스트 요소의 기하 구조, 페이지 상의 이의 위치, 이의 흐름 속성들(내부-순서, 외부-순서, 왼쪽-순서, 및 오른쪽 순서), 및 이의 요소들의 스타일 속성들의 조합에 기초하여 콜-아웃들을 식별한다. 예를 들어, 꼭지점 v가 페이지의 맨 위에 가까운 한 줄 단락을 포함하고, 이 한 줄 단락으로부터 A(v) 내의 임의의 요소로의 거리는 한 줄 높이보다 크며, L(v)<1, R(v)<1 이고, L(v) 및 R(v) 내의 임의의 꼭지점들은 이들 조건들을 공유하는 경우, 일부 실시예들은 단락을 헤더 콜-아웃으로 분류한다. 꼬리말 콜-아웃에 대한 요건들은 일부 실시예들에서, 페이지의 맨 아래까지 및 B(v) 내의 요소들까지의 거리를 찾는 것을 제외하고는 유사하다.
일부 실시예들은 또한 칼럼들로 돌출된 (그리고 이들의 고유 구역 내에 있지 않은) 관련 기사들, 랜덤으로 위치된 텍스트 박스들, 다른 텍스트(예컨대, 도면 캡션들)와 명백한 관계가 없는 텍스트의 작은 비트들 등을 콜-아웃들로 식별한다. 일부 실시예들은 순수한 텍스트 분석에 기초하여 이들 결정 (뿐만 아니라 흐름 속성들의 다른 결정)을 하는 반면, 다른 실시예들은 이미지들을 이 분석에 (예컨대, 그림 캡션에 대한 추가적인 증거로서) 결합한다. 예를 들어, 일부 실시예들에서, 일부 실시예들은 A(p) 및 B(p) 내의 모든 요소들로부터 떨어진 단일 라인 단락들을 격리된 작은 단락으로 식별한다. 단일 텍스트 라인을 갖는 단락이 이미지의 경계들에 의해 둘러싸이고 이미지 경계들과 특정 방식으로 정렬되는 경우(예컨대, 맨 아래 부근에 중앙 정렬, 맨 위 부근에 중앙 정렬 등) 캡션들이 일부 실시예들에서 식별된다.
둘 이상의 단락들의 직사각형 경계 박스가 교차하는 경우, 일부 실시예들은 단락들의 하나를 제외하고는 모두를 교차점 콜-아웃으로 식별한다. 예를 들어, 두 단락 p 및 q가 중첩하고 B(p) = {q, r}이라고 하자. r이 1의 내부-순서를 갖거나 q가 A(r)에 있으면, q는 일부 실시예들에서 교차점 콜-아웃이 된다. 일부 실시예들은 스타일 및/또는 정렬 속성들이 A(p) 또는 B(q) 내의 단락들과 일치하지 않는 임의의 단락 p를 교차점 콜-아웃으로 분류한다. 두 단락이 교차하고, 위의 규칙이 적용되지 않는 경우, 일부 실시예들은 작은 영역을 갖는 단락을 콜-아웃으로 분류한다.
문서 부분 내의 단락들에 대한 흐름 그래프를 생성한 후에, 프로세스(4200)는 (단계 4235에서) 흐름 그래프의 노드들을 칼럼들로 병합한다. 일부 실시예들은 A(p) = {q} 및 B(q) = {p}이면, 단락들 p 및 q에 대한 노드들을 병합한다. 이는 단락들 p 및 q가 일부 실시예들에서 동일한 칼럼 내에 있는 것을 나타낸다. 일부 실시예들에서, 새로운 노드 pq는 A(pq) = A(q), B(pq) = B(p), L(pq) = L(p) + L(q), 및 R(pq) = R(p) + R(q)를 가질 것이다. 예를 들어, 도 45에서, 흐름 그래프(4501)는 수정된 흐름 그래프(4502)에서 노드들 S(4520), T(4525) 및 U(4530)이 노드 STU(4575)로 병합되도록 수정된다. 다른 노드들도 유사하게 수정된다.
도 46은 노드들이 처음에 칼럼들로 병합된 후의 도 44의 페이지(4400)에 대한 흐름 그래프(4601)를 도시한다. 일부 실시예들에서 단락 R이 두 칼럼에 걸치고 왼쪽 및 오른쪽에 단락들을 갖고 있기 때문에 단락 R(4420)을 콜-아웃으로 식별한다. 따라서, 일부 실시예들은 흐름 그래프(4601)로부터 노드 R(4620)을 제거한다. 이는 더욱이 노드들을 칼럼들로 병합하는 것을 가능하게 한다.
일단 콜-아웃들이 식별되면 (그리고, 일부 실시예들에서 흐름 그래프로부터 제거되면), 프로세스(4200)는 (단계 4240에서) 흐름 그래프를 레이아웃들로 분할한다. 일부 실시예들은 확장 및 감소 가장자리들에 대한 라벨들을 분할하는 프로세스의 일부로 정의한다. 일부 실시예들에서, 단락 p에 대한 외부-순서가 1보다 크고, 세트 B(p) 내의 각 단락 q의 내부-순서는 1이면, p로부터 B(p) 내의 각 q로의 가장자리는 확장 가장자리이다. 유사하게, 일부 실시예들에서, 만약 단락 p의 내부-순서가 1보다 크고, 세트 A(p) 내의 각 단락 q의 외부-순서가 1이면, A(p) 내의 각 q로부터 p로의 가장자리들은 감소 가장자리이다. 도 45는 노드 R(4515)로 나아가는 가장자리들이 둘 다 감소 가장자리들이고, 노드 R(4515)로부터 나아가는 가장자리들을 둘 다 확장 가장자리들이다.
일부 실시예들의 분할은 가장자리들이 모두 라벨링된 각 꼭지점 v를 검사한다. v의 내부-순서가 1보다 크면, 일부 실시예들은 B(v)내의 각 p에 대해 A(p) = {v}인 한 요소들이 B(v)인 분할(partition)을 정의한다. 유사하게, v의 외부-순서가 1보다 크면, 일부 실시예들은 A(v) 내의 각 p에 대해 B(p) = {v}인 한 요소들이 A(v)인 분할을 정의한다. 이 두 분할이 가능한 경우, 꼭지점 v는 그 자체로 분할로 정의된다. 이 규칙들에 기초하여, 흐름 그래프(4502)는 세 분할(4511, 4512 및 4513)로 분할된다.
일부 실시예들은 가장 작은 수의 분할들이 분할들 간의 기하학적 겹침 없이 정의되도록 임의의 나머지 노드들을 하나 이상의 분할에 놓는다. 복잡한 페이지 구조로 인해, 일부 실시예들은 위에서 설명된 것보다 더 완화된 분할 규칙들을 이용한다. 예를 들어, v의 외부-순서가 1보다 큰 것을 제외하고는 분할이 노드 v로부터 생성될 수 있는 경우, v로부터 떨어져 있고 v에 비해 상대적으로 좁은 A(v)의 요소들이 일부 실시예들에서 제거된다. A(v) 내에 하나의 요소만이 남아 있는 경우, v로부터 제거된 꼭지점들로의 가장자리들이 제거되고, 분할은 계속된다. 일단 분할이 완료되면, 프로세스(4200)는 종료된다.
일부 실시예들에서, 각 분할은 선형 레이아웃에 대응하고, 최종 (병합된) 노드들의 각각은 칼럼에 대응한다. 일단 분할들이 정의되면, 일부 실시예들은 여백 폭, 마진, 인 라인 또는 유동적인 이미지들 등과 같은 문서 부분의 속성들을 계산한다.
더욱이, 레이아웃 및 흐름 정보(워드, 라인, 단락 및 칼럼 데이터를 포함)가 문서의 디스플레이에서 현저히 사용되고 아래의 섹션 VII 및 IX에서 설명된 바와 같이, 문서와의 보다 강한 사용자 상호작용을 가능하게 한다. 예를 들어, 일부 실시예들에서, 사용자는 여러 텍스트 칼럼, 이미지, 콜-아웃, 캡션 등을 포함하는 복잡한 문서를 보기를 원할 수 있고 문서의 전체 텍스트를 복사하여 텍스트 에디터로 붙일 수 있다. 이를 수행하기 위해, 사람이 문서의 요소들을 읽어 내리는 순서를 식별 시도하는 읽기 순서가 문서 내의 요소들 각각에 지정된다.
예를 들어, 일부 실시예들은 읽기 순서들을 칼럼들로 지정하여, 읽기 순서가 사람이 문서 또는 페이지의 시작으로부터 마지막으로 칼럼들을 읽는 예상 순서를 따르도록 한다. 다른 실시예들은 읽기 순서들을 다른 구조적 요소들(예컨대, 단락, 워드 등)에 지정한다. 일부 실시예들에서, 사용자가 이러한 문서의 전체 텍스트를 복사하여 또 다른 애플리케이션에 붙이는 경우, 텍스트는 사람이 읽는 순서로 애플리케이션에서 나타난다. 이는 모든 텍스트를 엄격하게 위에서 아래로 구성되도록 정렬하는 표준 PDF 파일로부터 복사 및 붙이기를 하는 것과 대비된다.
일부 실시예들은 또한 이미지 및 모양을 읽기 순서로 삽입한다. 예를 들어, 일부 실시예들은 특정 이미지를 텍스트의 특정 칼럼과 연관되도록 식별하고 이미지를 (문서 내의 증거에 따라) 텍스트 칼럼의 이전 또는 이후에 삽입한다. 예로서, 일부 실시예들은 이미지가 이 이미지에 대한 캡션과 연관된다고 식별하고 이 이미지를 이의 캡션 바로 전의 읽기 순서에 삽입한다.
일부 실시예들은 또한 구조적 요소들 간의 링크를 정의한다. 예를 들어, 일부 실시예들은 읽기 순서를 이용하여 실제로는 하나의 단락인 칼럼의 마지막에서의 단락 및 다음 칼럼의 시작에서의 단락 간의 링크들을 정의한다. 일부 실시예들에서, 하나의 특정 칼럼으로 지정되는 각 단락을 갖는 계층 구조를 유지하기 위해, 칼럼들에 연결되는 별개의 단락이 정의되지 않는다. 대신, 두 단락들이 실제로는 하나의 단락이라고 나타내는 두 단락들 간의 링크가 정의된다. 일부 실시예들은 제2 칼럼으로부터의 맨 위 단락이 실제로 제1 칼럼의 마지막에서의 단락의 연속인지 여부를 판단하기 위해(즉, 간격, 정렬 폰트 스타일 등을 조사) 단락에 라인들을 추가하기 위한 테스트들과 유사한 테스트들을 사용한다. 그 다음 링크가 사용될 수 있는데, 예컨대 만약 사용자가 정의된 단락들 중 하나 내의 단락을 선택하도록 의도된 선택 작업(예컨대, 세 번 클릭)을 수행하면, 전체 실제 단락이 링크에 기초하여 선택될 것이다.
일부 실시예들은 또한 레이아웃들(예컨대, 페이지들에 걸친 링크) 또는 구역들 간의 링크들을 정의한다. 예를 들어, 일부 실시예들은 연속 텍스트(예컨대, 상이한 페이지 상에서 계속되는 기사를 나타내는 신문 내의 텍스트)를 인식할 수 있고 연속 텍스트를 갖는 레이아웃 내의 텍스트를 텍스트가 계속되는 레이아웃으로 연결할 수 있다. 일부 실시예들은 링크가 수행되어야 한다고 나타내는 프로파일이 일치되어야 하는 경우에만 이러한 링크를 시도한다. 예를 들어, 만약 문서가 신문으로 식별되면, 일부 실시예들은 연속 텍스트를 검색할 것이다.
E. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명된 레이아웃 및 흐름 분석 프로세스들이 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 기타 핸드헬드 또는 리소스-제한 장치들(또는 컴퓨터 판독가능 매체에 저장된 장치들) 상에서 실행되는 소프트웨어로 구현된다. 도 47은 문서의 레이아웃 및 흐름 특성을 식별하기 위한 일부 실시예들의 레이아웃 및 흐름 분석 애플리케이션(4700)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션에 통합되는 반면(예컨대, 문서 재구조화 애플리케이션), 다른 실시예들에서 애플리케이션은 운영 시스템 내에서 구현될 수 있다.
레이아웃 및 흐름 분석 애플리케이션(4700)은 라인 식별 모듈(4705), 라인 병합 모듈(4710), 워드 식별 모듈(4715), 차이 클러스터링 모듈(4720), 라인 분리 모듈(4725), 단락 식별 모듈(4730), 칼럼 및 레이아웃 식별 모듈(4735), 및 순서 계산기(4740)를 포함한다.
도 47은 또한 문서 콘텐츠(4745)를 도시한다. 라인 식별 모듈(4705)은 문서 콘텐츠(4730)로부터 정보를 수신한다. 일부 실시예들에서, 이 정보는 문서 내의 문자들의 위치에 관한 정보이다. 라인 식별 모듈(4705)은 페이지 상의 공통 기준선으로 문자들을 식별하고 이들에 라인을 지정한다. 라인 식별 모듈은 정보를 라인 병합 모듈(4710)로 전달하고 이로부터 정보를 수신한다. 라인 병합 모듈은 수직으로 겹치는 라인들의 그룹들을 식별하고 라인들이 병합되어야 하는지 여부를 판단한다. 일부 실시예들에서, 라인 병합 모듈(4710)은 위에서 설명된 프로세스(3300)의 일부 또는 전부를 수행한다. 라인 병합 모듈(4710)은 이 정보를 다시 라인 식별 모듈(4705)로 전달하는데, 이는 최종 텍스트 라인들을 식별한다. 라인 식별 모듈(4705)은 라인 정보를 다시 문서 콘텐츠(4745) 뿐만 아니라 라인 분리 모듈(4725)로 전달한다.
워드 식별 모듈(4715)은 또한 문서 콘텐츠(4745)로부터 정보를 수신한다. 일부 실시예들에서, 이 정보는 문서 내의 문자들의 위치에 관한 정보이다. 워드 식별 모듈(4715)은 함께 워드들로 그룹화되어야 하는 문자들을 식별한다. 워드 식별 모듈(4715)은 정보를 차이 클러스터링 모듈(4720)로 전달하고 이로부터 정보를 수신한다. 차이 클러스터링 모듈(4720)은 문서 문자들에 대해 차이 클러스터링을 수행하여 문자들 간의 틈들의 상이한 레벨들을 반환한다(예컨대, 워드 틈들, 조각 틈들 등). 워드 식별 모듈(4715)은 차이 클러스터링 결과들을 이용하여 워드들을 식별한다. 워드 식별 모듈(4715)은 이의 결과들(뿐만 아니라 조각 틈들과 같은 다른 차이 클러스터링 결과들)을 문서 콘텐츠(4745) 뿐만 아니라 라인 분리 모듈(4725)로 전달한다.
라인 분리 모듈(4725)은 라인 식별 모듈로부터 라인 정보를 수신하고 워드 식별 모듈로부터 틈 정보를 수신할 뿐만 아니라 문서 콘텐츠(4745)로부터 기타 정보(예컨대, 여백 정보)를 수신한다. 라인 분리 모듈(4725)은 라인들이 분리되어야 하는 것을 식별하고 이 분리들에 기초하여 새로운 라인 정보를 출력한다. 새로운 라인 정보는 문서 콘텐츠(4745) 뿐만 아니라 단락 식별 모듈(4745)로 전달된다. 일부 실시예들에서, 라인 분리 모듈(4725)은 프로세스(3800)의 일부 또는 전부를 수행한다.
단락 식별 모듈(4730)은 라인 분리 모듈(4725)로부터 라인 정보를 수신할 뿐만 아니라 문서 콘텐츠(4745)로부터 다른 정보(예컨대, 정렬 정보)를 수신한다. 단락 식별 모듈(4730)은 어느 라인들이 단락들로 그룹화되어야 하는지를 식별하고 결과 정보를 출력한다. 단락 정보가 문서 콘텐츠(4745)로 전달될 뿐만 아니라 칼럼 및 레이아웃 식별 모듈(4735)로 전달된다. 일부 실시예들에서, 단락 식별 모듈(4730)은 프로세스(4000)의 일부 또는 전부를 수행한다.
칼럼 및 레이아웃 식별 모듈(4735)은 단락 식별 모듈(4730)로부터 단락 정보를 수신할 뿐만 아니라, 문서 콘텐츠(4745)로부터 기타 정보(예컨대, 구역 정보)를 수신한다. 칼럼 및 레이아웃 식별 모듈(4735)은 단락들을 칼럼들로 그룹화하고 칼럼들을 레이아웃들로 그룹화한다. 칼럼 및 레이아웃 정보 모듈(4735)은 정보를 순서 계산기(4740)로 전달하고 이로부터 정보를 수신한다. 순서 계산기(4740)는 모듈(4735)로부터 단락 정보를 수신하고 단락에 대한 내부-순서, 외부-순서, 왼쪽-순서, 및 오른쪽 순서(뿐만 아니라 대응 세트들 A, B, L 및 R)를 계산한다. 이 정보는 그 다음 흐름 그래프를 생성하는데 사용하기 위한 모듈(4735)로 돌아간다. 칼럼 및 레이아웃 식별 모듈(4735)로부터의 결과들이 문서 콘텐츠(4745)로 전달된다. 일부 실시예들에서, 칼럼 및 레이아웃 식별 모듈(4745)은 위에서 설명된 프로세스(4200)의 일부 또는 전부를 수행한다.
일부 실시예들에서, 위에서 설명된 모듈들 또는 기타 모듈들에 의해 수행된 프로세스들의 결과들이 전자 저장소에 (예컨대 문서 객체 모델의 일부로서) 저장된다. 문서 객체 모델은 그 다음 사용자가 문서를 (예컨대, 터치스크린, 커서 제어 장치 등을 통해) 리뷰 및/또는 문서와 상호동작할 수 있도록 전자 디스플레이 장치(예컨대, 핸드헬드 장치, 컴퓨터 스크린 등) 상에 문서를 디스플레이하기 위해 사용될 수 있다.
V. 테이블 식별
본 발명의 일부 실시예들은 문서 내의 테이블들을 식별한다. 일부 실시예들은 테이블에 대한 셀, 열 및 칼럼을 식별하고 테이블이 편집되도록 하며 이를 스프레드시트 등으로 내보낸다. 위의 섹션 II에서 설명된 프로세스들로부터의 구역 정보 뿐만 아니라 위의 섹션 IV에서 설명된 프로세스들로부터의 레이아웃 및 흐름 정보가 일부 실시예들의 테이블 식별 프로세스에서 사용된다. 일부 실시예들은 테이블이 효과들 이를 테면 돌출(extrusion) 및 그림자 효과를 포함하는 경우 일반적인 것과 같이 테이블들이 모양 및 이미지들과 겹치는 포함된 그래픽들의 연관되지 않은 그룹으로 그려진 경우에도 테이블들을 식별하고 재구조화할 수 있다.
도 48은 문서의 일부 내의 테이블들을 식별하기 위한 일부 실시예들의 프로세스(4800)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 4805에서) 문서 부분에 대한 구역 및 레이아웃을 수신한다. 일부 실시예들에서, 구역 정보는 위의 섹션 II에서 설명된 프로세스들의 출력이고, 레이아웃 정보는 위의 섹션 IV에서 설명된 프로세스들의 출력이다. 일부 실시예들에서, 문서 부분은 문서의 페이지, 또는 페이지의 구역 등이다.
프로세스는 그 다음 (단계 4810에서) 완전한 경계들로 테이블들을 식별한다. 도 49는 완전한 경계들을 갖는 테이블(4900)의 예를 도시한다. 일부 실시예들은 경계들이 모두 똑바른 직사각형인 둘 이상의 구역에 의해 완전히 분할된 (위의 섹션 II에서 정의된) 섬인 임의의 구역을 분류한다. 이 분할 직사각형들은 따라서 테이블의 셀들이다. 완전한 경계들을 갖는 테이블들의 식별이 아래의 서브섹션 A에서 보다 자세히 설명된다.
프로세스(4800)는 다음에 (단계 4815에서) 연결된 경계들로 테이블들을 식별한다. 도 50은 연결되지만 불완전한 경계들을 갖는 테이블(5000)의 예를 도시한다. 테이블은 임의의 경계가 연결 세트를 통해 임의의 다른 경계와 연결되도록 실제로 그려진 테이블의 모든 경계가 서로 교차하는 경우 일부 실시예들에서 연결된 경계들을 갖는다. 테이블(5000)은 이 테이블의 외부 경계들이 그려지지 않기 때문에 불완전한 경계들을 갖는다. 연결되지만 불완전한 경계들을 갖는 테이블들의 식별은 아래의 서브섹션 B에서 보다 자세히 설명된다.
프로세스(4800)는 그 다음 (단계 4820에서) 경계가 없거나 연결되지 않은 경계들을 갖는 테이블들을 식별한다. 도 51은 경계들이 없는 테이블(5100)의 예를 도시한다. 도 52는 연결되지 않은 경계들을 갖는 테이블(5200)을 도시한다. 테이블(5200)은 테이블(5100)과 다르게 그려진 일부 경계들을 갖지만, 이 경계들은 연결된 세트를 형성하지 않는다. 경계들이 연결된 세트를 형성하지 않는 테이블들에 대해서, 일부 실시예들은 테이블들을 식별하기 위해서 레이아웃 정보의 사용을 필요로 한다. 경계들이 없거나 연결되지 않은 경계들을 갖는 테이블들의 식별은 아래의 서브섹션 C에서 자세히 설명된다.
일단 문서의 일부의 모든 테이블이 식별되면, 프로세스는 (단계 4825에서) 테이블들이 편집 및 다른 소프트웨어에 의해 액세스가능하도록 정의한다. 프로세스는 그 다음 종료된다. 일부 실시예들에서, 이는 사용자가 테이블의 개별 셀들을 편집하고, 테이블의 열 및 칼럼을 선택하고, 테이블 정보를 지능적으로 스프레드시트로 복사할 수 있도록 할 수 있다.
A. 완전한 경계들을 갖는 테이블들
본 발명의 일부 실시예들은 모든 경계들이 경계 그래픽의 일부 조합(예컨대, 라인들, 좁은 직사각형들, 좁은 이미지들, 채워진 직사각형들의 경계들 등)으로 그려지는 테이블들을 식별한다. 이 경계 그래픽들을 식별하고 경계 그래픽들을 이용하여 구역들을 식별하기 위한 일부 실시예들의 프로세스들은 위의 섹션 II에서 설명된다.
도 53은 완전한 경계들의 세트를 갖는 테이블들을 식별하고, 식별된 테이블들의 셀들, 열들, 및 칼럼들을 정의하기 위한 일부 실시예들의 프로세스(5300)를 개념적으로 도시한다. 일부 실시예들에서, 프로세스(5300)는 또한 일단 암시적인 경계들이 불완전하거나 경계들이 없는 테이블들에 대해 식별된 경우 이 테이블들을 식별하고 정의하는데 사용된다. 이러한 프로세스들은 서브섹션 B 및 C에 보다 자세히 설명된다. 프로세스(5300)는 도 54와 함께 설명된다. 도 54는 완전한 경계들을 갖는 테이블을 포함하는 페이지(5400)를 도시한다.
도 53에 도시된 바와 같이, 프로세스는 (단계 5305에서) 문서의 부분에 대한 구역 정보를 수신한다. 일부 실시예들에서, 문서의 부분은 전체 문서, 문서의 섹션, 또는 문서의 페이지이다. 구역 정보는 일부 실시예들에서 위의 섹션 II에서 설명된 프로세스들로부터 출력된 정보이고 구역 경계 및 교차점 정보 뿐만 아니라 식별된 구역들 및 구역 그래프 정보를 포함한다.
프로세스(5300)는 그 다음 (단계 5310에서) 모두 직사각형인 둘 이상의 구역들에 의해 완전히 분할되는 섬들을 식별한다. 위에서 설명된 바와 같이, 일부 실시예들에서, 섬은 부모 구역과 경계 간격을 공유하지 않는 구역이다. 도 54는 직사각형들에 의해 분할된 하나의 섬(5401)을 포함하는 페이지(5400)를 도시한다. 도시된 바와 같이, 13개의 직사각형들은 13개의 직사각형 구역들에 의해 덮여진 페이지의 영역이 정확히 섬(5401)의 영역이 되도록 섬(5401)을 완전히 분할한다. 따라서, 섬(5401)은 테이블로 식별된다.
다음으로, 프로세스는 단계(5310)에서 식별되는 것들 중 프로세싱되지 않은 섬들이 있는지 여부를 판단한다(단계 5311에서). 식별된 것이 없거나 식별된 모든 것이 테이블들로 프로세싱된 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 5314에서) 다음 식별된 섬을 선택한다. 일부 실시예들에서, 모든 것이 프로세싱되는 한, 식별된 섬들에 대한 특정 순서가 없다.
프로세스(5300)는 그 다음 (단계 5315에서) 선택된 섬 내의 수평 경계들을 가장 높은 것에서 가장 낮은 순으로 정렬한다. 일부 실시예들은 가장 높은 맨 위 경계선을 갖는 경계가 첫번째가 되도록 경계의 맨 위 경계에 의해 정렬한다. 일부 실시예들에서 수평 경계들은 테이블로 식별되고 섬의 경계들을 포함하는 섬 내의 수평 경계 간격들이다. 도 54는 16개의 수평 경계 간격들(5405 내지 5420)을 도시한다. 일부 실시예들에서, 수평 경계 간격들은 프로세스 이를 테면 섹션 II에서 위에서 설명된 프로세스(900)에 의해 식별된다.
수평 경계 간격들이 순서대로 정렬됨에 따라, 프로세스는 (단계 5320에서) 제1 평가되지 않은 수평 경계를 선택하고 (단계 5325에서) 테이블의 다음 수평 격자선을 정의한다. 도 54의 예에서, 경계 간격(5405 또는 5406)은 제1 선택된 경계인데, 이 지점에서 수평 격자선 1이 정의된다.
프로세스는 그 다음 (단계 5330에서) 선택된 경계를 현재 격자선으로 지정하고 격자선의 수직 정도를 격자선에 지정된 모든 경계들의 y 간격들의 교차점으로 설정한다. 따라서, 현재 선택된 경계가 현재 격자선에 지정될 첫번째인 경우, 격자선의 y 간격은 단순히 경계의 y 간격이다. 그러나, 복수의 경계들이 격자선으로 지정된 경우, 격자선의 y 간격은 모든 지정된 경계들의 y 간격들을 포함한다.
프로세스는 그 다음 (단계 5335에서) 격자선으로 지정되지 않은 수평 경계들이 더 있는지 여부를 판단한다. 수평 경계들이 더 남아 있지 않은 경우, 프로세스는 아래에서 설명되는 단계(5345)로 진행한다. 그렇지 않고, 경계들이 더 남아 있는 경우, 프로세스는 (단계 5340에서) 다음 경계의 y 간격이 현재 격자선의 y 간격과 겹치는지 여부를 판단한다. y 간격들이 겹치지 않는 경우, 현재 격자선 내의 모든 경계들이 정의되고, 프로세스는 단계(5320)로 진행하여 다음 경계를 선택하고 새로운 격자선을 시작한다. 그러나, y 간격들이 겹치지 않는 경우, 프로세스는 단계(5330)로 진행하여 경계를 현재 격자선에 지정하고, 격자선의 y 간격을 업데이트하며, 다음 경계로 계속된다.
도 54에 도시된 바와 같이, 경계(5405 또는 5406)를 섬(5401)에 대한 제1 경계로 선택한 후에, 이 둘에 대한 다른 경계가 다음으로 선택되고 수평 격자선 1에 추가된다. 경계들(5407 및 5408)을 포함하는 수평 격자선 2가 다음에 정의되고, 계속하여 수평 격자선 6(경계들 5418 내지 5420)까지 정의된다.
모든 수평 경계들이 격자선들에 지정되면, 프로세스(5300)는 수직 경계들을 고려한다. 프로세스(5300)는 (단계 5345에서) 선택된 섬 내의 수직 경계들을 왼쪽에서 오른쪽으로 정렬한다. 일부 실시예들은 가장 왼쪽의 왼쪽 경계를 갖는 경계가 첫번째가 되도록 경계의 왼쪽 경계에 의해 정렬된다. 일부 실시예들에서 수직 경계들은 테이블로 식별되고 섬의 경계들을 포함하는 섬 내의 수직 경계 간격들이다. 도 54는 18개의 수직 경계 간격들(5425 내지 5442)을 도시한다. 일부 실시예들에서, 수직 경계 간격들은 위의 섹션 II에서 설명된 프로세스(900)와 같은 프로세스에 의해 식별된다.
수직 경계 간격들이 순서대로 정렬되면, 프로세스는 (단계 5350에서) 제1 평가되지 않은 수직 경계를 선택하고 (단계 5355에서) 테이블의 다음 수직 경계선을 정의한다. 도 54의 예에서, 경계 간격들(5426 내지 5428) 중 하나가 첫번째로 선택된 경계이고, 이 지점에서 수직 격자선 1이 정의된다.
프로세스는 그 다음 (단계 5360에서) 선택된 경계를 현재 격자선으로 지정하고 격자선의 수평 정도를 격자선으로 지정된 모든 경계들의 x 간격들의 교차점으로 설정한다. 따라서, 만약 현재 선택된 경계가 현재 격자선에 지정될 첫번째라면, 격자선의 x 간격은 단순히 경계의 x 간격이다. 그러나, 복수의 경계들이 격자선에 지정되는 경우, 격자선의 x 간격은 모든 지정된 경계들의 x 간격들을 포함한다.
프로세스는 그 다음 (단계 5365에서) 격자선에 지정되지 않은 수직 경계들이 더 있는지 여부를 판단한다. 남아 있는 경계들이 더 없는 경우, 프로세스는 아래에서 설명되는 단계(5375)로 진행한다. 그렇지 않고, 남아있는 경계들이 더 있는 경우, 프로세스는 (단계 5370에서) 다음 경계의 x 간격이 현재 격자선의 x 간격과 겹치는지 여부를 판단한다. x 간격들이 겹치지 않는 경우, 현재 격자선 내의 모든 경계들이 정의되고, 프로세스는 단계(5350)로 진행하여 다음 경계를 선택하고 새로운 격자선을 시작한다. 그렇지 않고, x 간격들이 겹치는 경우, 프로세스는 단계(5360)로 진행하여 경계를 현재 격자선에 지정하고, 격자선의 x 간격을 업데이트하며, 다음 경계로 계속된다. 경계들(5425 내지 5428) 중 하나를 섬(5401)에 대한 제1 경계로 선택한 후에, 다른 세 개 중 하나가 선택되고 수직 격자선 1로 추가된다. 일단 이 경계들 중 4개 모두가 수직 격자선 1로 추가되면, 경계들(5429 내지 5433)을 포함하는 수직 격자선 2가 정의되고, 수직 격자선 4(경계들 5438 내지 5442)까지 정의된다.
일단 모든 수직 경계들이 평가되면, 모든 격자선들이 테이블에 대해 정의된다. 당업자라면 프로세스(5300)가 수직 격자선들 전에 수평 격자선들을 정의하는 반면, 일부 실시예들은 수직 격사선들을 우선 정의하는 것을 알 수 있다.
프로세스는 다음 (단계 5375에서) 열 및 칼럼 수들을 테이의 셀들에 지정한다. 섬을 나누는 구역들 각각은 일부 실시예들에서 셀이다. 일부 실시예들에서, 셀은 이의 상부 경계의 격자선으로부터 이의 아래의 경계의 격자선보다 하나 적은 곳 까지의 열들에 걸친다. 예를 들어, 이의 상부 경계는 수평 격자선 1의 일부이고 이의 하부 경계는 수평 격자선 3의 일부이기 때문에 도 54 내의 셀(5450)은 열들 1 및 2에 걸친다. 유사하게, 일부 실시예들에서, 셀은 이의 왼쪽 경계들의 격자선으로부터 이의 오른쪽 경계의 격자선보다 하나 적은 곳까지의 열들에 걸친다. 예를 들어, 셀(5450)은 자신의 왼쪽 경계가 수직 격자선 1의 일부이고 이의 오른쪽 경계가 수직 격자선 2의 일부이기 때문에 칼럼 1에 걸친다.
일단 테이블 구조(즉, 격자선들, 셀들, 열들 및 칼럼들)가 재구조화되었으면, 프로세스는 (단계 5380에서) 테이블에 대한 스타일링 정보를 결정한다. 프로세스는 그 다음 위에서 설명되는 단계(5311)로 진행하여 테이블들로 프로세스할 식별된 섬들이 더 있는지 여부를 결정한다. 일부 실시예들에서, 테이블 스타일 정보는 구역 경계들 뿐만 아니라 배경 그래픽들을 구성하는 경계 그래픽들로부터 온다. 예를 들어, 특정 셀을 덮거나 이에 교차하는 복수의 배경 모양들이 있는 경우, 일부 실시예들은 다양한 배경 모양들을 합성하고 이를 필요한 경우 격자선 경계에 클리핑하여 렌더링되는 이에 따른 모양 칼라 또는 이미지를 결정한다. 마찬가지로, 일부 실시예들은 통과하여 보여지는 모양 칼라들의 가중된 평균에 기초하여 셀 경계 칼라들을 판단한다. 가중된 평균의 가중치들은 일부 실시예들에서 각 칼라에 대해 보여지는 영역의 양에 기초한다. 일부 실시예들은 또한 경계 스타일 이를 테면 그림자 또는 돌출을 인식한다.
일부 실시예들에서, 테이블을 식별하고 테이블 구조를 결정하는 것은 테이블이 마치 연관되지 않은 그래픽 세트 대신 통상적인 워드 프로세서에 의해 생성된 것처럼 활용될 수 있도록 한다. 예를 들어, 일부 실시예들에서, 사용자는 개별적으로 테이블 셀들을 편집하고, 이 정보를 스프레드시트로 보내고, 테이블 데이터를 정렬시킬 수 있다.
일부 실시예들은 프로세스(5300)만을 이용하여 테이블들을 식별한다. 그러나, 이렇게 하는 것은 완전한 경계들의 세트를 갖는 테이블들만을 식별할 것이다. 다른 실시예들은 아래의 서브섹션들 B 및 C에 설명된 프로세스들을 이용하여 완전한 경계 그래픽을 갖지 않지만 테이블의 구조 및 레이아웃을 갖는 테이블들을 식별한다.
B. 연결된 경계들을 갖는 테이블들
완전한 경계 세트들을 갖는 테이블에 더하여, 일부 실시예들은 불완전하지만 연결되는 경계들의 세트를 갖는 테이블들을 식별한다. 도 50은 이러한 테이블(5000)을 도시한다. 일부 실시예들은 프로세스들을 이용하여 의도된 테이블 경계들이 될 수 있는 함축적 경계들을 정의하고, 그 다음 위에서 설명된 프로세스(5300)와 같은 프로세스를 적용하여 실제 테이블을 식별하고 재구조화한다.
도 55는 연결된 경계들의 세트를 갖는 테이블들을 식별 및 재구조화하기 위한 일부 실시예들의 프로세스(5500)를 개념적으로 도시한다. 프로세스(5500)는 도 56과 함께 설명될 것이다. 도 56은 페이지(5600) 상에 연결되지만 불안전한 경계들을 갖는 테이블을 식별하는 시퀀스를 도시한다.
도 55에 도시된 바와 같이, 프로세스(5500)는 (단계 5505에서) 잠재적 구역 경계들의 세트 및 문서의 일부에 대한 경계 교차점들을 수신한다. 일부 실시예들에서, 잠재적 구역 경계들 및 교차점들이 위의 섹션 II에서 설명된 바와 같이 프로세스(900)에 의해 결정된다. 다른 실시예들은 다른 프로세스들을 이용하여 문서 부분에 대한 잠재적 구역 경계들을 결정한다. 일부 실시예들에서 문서 부분은 전체 문서, 문서의 선택, 또는 문서의 페이지이다.
다음으로, 프로세스(5500)는 (단계 5510에서) 단계(5505)에서 수신된 잠재적 구역 경계들 모두를 포함하는 세트 U를 정의한다. 프로세스는 그 다음 (단계 5515에서) U가 비어있는지 여부를 판단한다. 세트가 비어 있는 경우, 프로세스는 연결될 수 있는 구역 경계들이 없기 때문에 종료된다.
그렇지 않고, 세트 U가 적어도 하나의 구역 경계를 포함하면, 프로세스는 (단계 5520에서) U로부터 경계 b를 선택하고 새로 연결된 세트 C를 정의한다. 일부 실시예들은 가장 위, 가장 왼쪽, 상위 왼쪽 코너에 가장 가까운 경계로 시작하거나, 일부 다른 휴리스틱을 이용하여 어느 경계를 먼저 선택해야 하는지 판단한다. 다른 실시예들은 경계 h를 랜덤으로 선택한다. 선택된 경계 b가 그 다음 (단계 5525에서) 세트 U로부터 제거되고 세트 C로 추가된다. 연결된 세트 C는 일부 실시예들에서 교차점들의 세트를 통해 모두 연결되는 경계들의 세트이다.
프로세스는 그 다음 (단계 5530에서) 현재 경계 b에 대해 평가되지 않은 세트 U로부터 경계 z를 선택하고, (단계 5535에서) 경계 z가 경계 b와 교차하는지 여부를 판단한다. 일부 실시예들에서, 경계 z가 경계 b와 교차하는지 여부를 판단하는 것은 수신된 교차점들 중 하나가 경계 z를 경계 b로 연결하는지 여부를 판단하는 것을 수반한다. 경계들이 교차하지 않는 경우, 프로세스는 아래에서 설명되는 단계(5545)로 진행한다. 그렇지 않고, 경계들이 교차하는 경우, 프로세스는 (단계 5540에서) 경계 z를 현재 연결된 세트 C로 추가하고 z를 큐에 위치시킨다. 일부 실시예들은 큐를 이용하여 다음 연결될 세트로 이동하기 전에 추가적인 연결들에 대해 평가될 필요가 있는 연결된 세트 내의 경계들을 추적한다.
다음으로, 프로세스는 (단계 5545에서) 세트 U 내의 임의의 경계들이 현재 경계 b와의 교차점에 대해 아직 평가되지 않았는지 여부를 판단한다. 더 많은 경계들이 남아 있는 경우, 프로세스는 단계(5530)로 진행하여 또 다른 경계 z를 선택하고 새로운 경계 z가 현재 경계 z와 교차하는지 여부를 판단한다.
그렇지 않고, U 내의 모든 경계들이 현재 경계 h와의 교차점에 대해 평가된 경우, 프로세스(5500)는 (단계 5550에서) 큐가 비어 있는지 여부를 판단한다. 큐 안에 적어도 하나의 경계가 있는 경우, 프로세스는 (단계 5555에서) 큐 내의 다음 경계를 새로 선택된 경계 b로 설정한다. 프로세스는 그 다음 단계(5525)로 진행하여 U에 남아 있는 경계들이 새로 선택된 경계 b와 교차하는지 여부를 평가한다.
그렇지 않고, 큐가 비어 있는 경우, 현재 연결된 세트 C의 모든 요소들이 지정되고 프로세스는 (단계 5560에서) 세트 U가 비어있는지 여부를 판단한다. U가 비어 있지 않는 경우, 프로세스는 단계(5520)로 진행하여 새로운 경계 b를 선택하고 새로 연결된 세트 C를 정의한다.
U가 비어 있는 경우, 모든 경계들이 프로세싱되고 자신의 각각의 연결된 세트 내에 놓인다. 도 56은 7개의 경계들(5605 내지 5635)을 갖는 페이지(5600)를 도시한다. 프로세스(5500)를 적용하여, 이 7개의 경계들이 3개의 연결된 세트들(5640(경계(5605)를 포함), 5645(경계들(5610 및 5615)을 포함), 및 5650(경계들(5620 내지 5635)을 포함))로 지정된다. 이 연결된 세트들 각각은 연결된 세트 내의 적어도 하나의 다른 경계와 교차하고 연결된 세트 밖의 임의의 경계들과 교차하지 않는 경계들을 포함한다.
연결된 세트들 모두가 식별되면 세트 U가 비어 있기 때문에 프로세스는 (단계 5565에서) 세트 C를 선택하고, (단계 5570에서) C의 똑바른 경계 박스를 형성하는 4개의 경계들을 세트 C에 추가한다. 일부 실시예들에서, 똑바른 경계 박스는 연결된 세트 내의 모든 경계들을 포함하는 가장 작은 똑바른 직사각형이다. 예를 들어, 도 56은 연결된 세트(5650)의 똑바른 경계 박스를 형성하는 4개의 경계들(5655-5670)을 도시한다. 연결된 세트(5640)는 단일 라인이고, 따라서 이의 똑바른 경계 박스는 바로 라인의 외부 가장자리들이다. 연결된 세트(5645)의 똑바른 경계 박스를 형성하는 4개의 경계들 중 둘은 경계들(5610 및 5615)인 반면, 추가적인 경계들(5675 및 5680)이 일부 실시예들에서의 단계(5570)에 의해 추가된다.
프로세스는 그 다음 (단계 5575에서) 임의의 연결된 세트들 C가 남아 있는지 여부를 판단한다. 적어도 하나의 세트가 남아 있는 경우, 프로세스는 단계(5565)로 진행하여 또 다른 세트 C를 선택한다. 모든 세트들이 평가된 경우, 프로세스는 (단계 5580에서) 모든 연결된 세트로부터의 모든 경계들을 이용하여 구역들을 식별한다. 일부 실시예들은 (위의 섹션 II에서 설명된) 프로세스(1200) 또는 유사한 프로세스를 적용하여 구역들을 식별한다.
일단 구역들이 식별되면, 프로세스(5500)는 (단계 5585에서) 구역들로부터 테이블들을 식별하고 이 테이블들을 재구조화한다. 프로세스는 그 다음 종료된다. 일부 실시예들은 일단 구역들이 연결된 세트들이 똑바른 경계 박스들로부터의 암시된 경계들을 이용하여 식별되면 위의 서브섹션 A에서 설명되는 바와 같이 프로세스(5300)를 적용하여 테이블들을 재구조화한다. 도 56은 하나의 테이블(5685)이 페이지(5600) 상에서 식별되는 것을 도시한다. 테이블은 세 개의 칼럼 및 세 개의 열 들로 되어, 전체 9개의 셀을 갖는다.
일부 실시예들은 그 다음 테이블 및 셀 구역들(및 이들 구역들을 구성하는 경계 그래픽들)을 제거하고 아무것도 없어야 하는 곳의 구역들을 정의하지 않도록 임의의 암시된 경계들 없이 구역들을 재식별한다. 일부 실시예들은 그 다음 테이블 및 셀 구역들을 재삽입하여 위의 섹션 II에서 설명된 바와 같이 구역 그래프를 결정한다. 이러한 실시예들은 테이블 및 셀 구역들의 식별 및 이들의 구조를 포함하는 전체 구역 그래프를 생성한다.
C. 경계가 없거나 연결되지 않은 경계들을 갖는 테이블들
완전하거나 적어도 연결된 세트의 경계들을 갖는 테이블들에 더하여, 일부 실시예들은 경계들이 없거나 연결되지 않은 경계들을 갖는 테이블들을 식별한다. 도 51은 경계들이 없는 테이블(5100)을 도시하는 반면, 도 52는 연결되지 않은 경계들을 갖는 테이블(5200)을 도시한다. 일부 실시예들은 프로세스들을 이용하여 의도된 테이블 경계들이 될 수 있는 암시된 경계들을 정의하고, 프로세스(5300)와 같은 프로세스를 적용하여 실제 테이블을 식별 및 재구조화한다. 경계들이 연결된 세트를 형성하지 않는 테이블들에 대해, 일부 실시예들은 구역 정보에 더하여 테이블들을 식별하기 위해 레이아웃 정보의 사용을 필요로 한다.
도 57은 경계들이 없거나 연결되지 않는 경계들을 갖는 테이블들을 식별하고 재구조화하기 위한 프로세스(5700)를 개념적으로 도시한다. 프로세스(5700)는 도 58 내지 60과 함께 설명될 것이다. 도 58 내지 60은 프로세스(5700)를 페이지(5800)에 적용하여 연결되지 않은 경계들을 갖는 테이블을 식별하는 것을 도시한다.
도 57에 도시된 바와 같이, 프로세스는 (단계 5705에서) 주요 구역에 대한 레이아웃 정보를 수신한다. 일부 실시예들에서, 주요 구역이 임의의 다른 구역이 또한 될 수 있지만 주요 구역은 페이지이다. 일부 실시예들의 레이아웃 정보는 프로세스들 이를 테면 위의 섹션 IV에서 설명된 4000 및 4200로부터 출력된 정보이다. 이 정보는 주요 구역 내의 단락, 칼럼, 및 레이아웃의 식별을 포함한다.
프로세스(5700)는 그 다음 (단계 5707에서) 주요 구역 내에 임의의 프로세싱되지 않은 레이아웃들이 있는지 여부를 판단한다. 주요 구역 내에 레이아웃이 없거나, 모든 레이아웃이 프로세싱되었으면, 프로세스는 아래에서 설명된 단계(5740)로 진행한다. 그렇지 않으면 프로세스는 (단계 5710에서) 주요 구역 내의 레이아웃을 선택한다. 프로세스는 그 다음 (단계 5715에서) 레이아웃의 똑바른 직선으로 둘러싸인 경계들에서 암시된 구역 경계들을 정의한다. 일부 실시예들에서, 똑바른 직선으로 둘러싸인 경계들은 레이아웃 내의 모든 단락들을 완전히 감싸는 가장 작은 직사각형이다. 프로세스는 도한 (단계 5720에서) 레이아웃의 칼럼들을 분리하는 수직 흰 공간 및 칼럼 내의 레이아웃의 단락들을 분리하는 수평 흰 공간에서 암시된 구역 경계들을 정의한다.
도 58은 페이지(5800)를 도시한다. 페이지는 3개의 작은 구역들을 포함한다: 좌상 코너의 구역(5805), 중심의 음영 처리된 구역(5810), 및 바닥을 향하는 구역(5815). 구역들(5810 및 5815)은 일부 실시예들에서 섬들이다. 주요 구역(페이지(5800))은 두 레이아웃(5820 및 5825)을 포함한다. 도 59에 도시된 바와 같이, 선택된 레이아웃(5820)을 갖는 프로세스는 레이아웃(5820)의 경계 박스 주위 및 레이아웃(5820)의 세 칼럼들 간의 암시된 경계들(5905 내지 5925)을 정의한다. 레이아웃의 바닥 경계는 레이아웃이 구역(5810)의 상단에 의해 경계가 정해지기 때문에 일부 실시예들에서 암시된 경계를 필요로 하지 않는다. 유사한 암시된 경계들(5985 내지 5997)이 레이아웃(5825)에 대해 정의된다.
다음으로, 프로세스(5700)는 (단계 5725에서) 바깥으로 확장되어 또 다른 칼럼 내의 단락의 경계 박스와 교차하는 레이아웃 내에 임의의 수평 경계(예컨대, 암시된 경계)가 있는지 여부를 판단한다. 이 수평 일치 테스트는 단순히 칼럼들로 분해되는 단락들의 통상적인 세트가 되는 것과 대조적으로, 레이아웃이 실제로 테이블로된 구조를 갖도록 보장한다. 레이아웃이 수평 일치 테스트를 통과하지 않는 경우, 프로세스는 위에서 설명되는 단계(5707)로 진행한다. 그렇지 않고, 레이아웃이 수평 일치 테스트를 통과하는 경우, 프로세스는 (단계 5730에서) 레이아웃을 테이블 또는 테이블의 일부가 될 수 있는 잠재적 레이아웃들을 추적하는 세트 S에 추가한다. 프로세스는 그 다음 단계(5707)로 진행한다.
프로세스가 (단계 5707에서) 주요 구역이 더 이상 레이아웃을 포함하지 않는다고 판단하면, 프로세스는 (단계 5740에서) 주요 구역 내에 프로세싱되지 않은 구역들이 있는지 여부를 판단한다. 주요 구역이 다른 구역을 포함하거나, 모든 구역들이 프로세싱된 경우, 프로세스는 암시된 경계들을 정의하는 것이 종료되고 아래에서 설명되는 단계(5775)로 진행한다.
그렇지 않고, 주요 구역 내에 적어도 하나의 프로세싱되지 않은 구역이 있는 경우, 프로세스는 (단계 5745에서) 작은 구역들 중 하나를 선택한다. 프로세스는 그 다음 (단계 5750에서) 더 작은 구역이 하나의 레이아웃만을 갖는 섬인지 여부를 판단한다. 페이지(5800) 상에서, 구역들(5810 및 5815)은 하나의 레이아웃만을 갖는 섬들인 반면, 구역(5805)은 하나의 레이아웃만을 포함하지만 이의 경계들이 페이지 경계들을 포함하기 때문에 섬이 아니다.
선택된 구역이 하나의 레이아웃만을 갖는 섬이 아닌 경우, 프로세스(5700)는 위에서 설명되는 단계(5740)로 진행한다. 그렇지 않고, 선택된 구역이 하나의 레이아웃만을 갖는 섬인 경우, 프로세스는 (단계 5755에서) 레이아웃의 칼럼들을 분리하는 수직 흰 공간 및 칼럼 내의 레이아웃의 단락들을 분리하는 수평 흰 공간에서의 암시된 구역 경계들을 정의한다. 도 59는 구역(5810)의 칼럼들 간에서 정의되는 암시된 구역 경계들(5971 및 5972)을 도시한다.
프로세스는 그 다음 (단계 5760에서) 외부로 확장되어 또 다른 칼럼 내의 단락의 경계 박스를 교차하는 레이아웃 내에 임의의 수평 경계(예컨대, 암시된 경계)가 있는지 여부를 판단한다. 이 수평 일치 세트는 단지 칼럼들로 분해되는 통상적인 단락 세트가 되는 것과 대조적으로 레이아웃이 실제로 표로 나타낸 구조를 갖도록 보장한다. 레이아웃이 수평 일치 테스트를 통과하지 않는 경우, 프로세스는 위에서 설명되는 단계(5740)로 진행한다. 그렇지 않고, 레이아웃이 수평 일치 테스트를 통과하는 경우, 프로세스는 (단계 5765에서) 레이아웃을 테이블 또는 테이블의 일부가 될 수 있는 잠재적 레이아웃들을 추적하는 세트 S에 추가하고, 그 다음 단계(5740)로 진행한다.
페이지(5800)는 일부 실시예들에서 하나의 레이아웃만을 갖는 섬인 구역(5815)을 포함한다. 도 59는 구역(5815)에 대해 정의된 암시된 구역들(5930 내지 5980)을 도시한다. 그러나, 이 레이아웃은 수평 경계들(5945 내지 5980)이 모두 외부로 확장되는 경우 레이아웃 내의 다른 단락들의 경계 박스와 교차하기 대문에 수평 일치 테스트를 통과하지 않는다. 따라서, 구역(5815)의 레이아웃은 페이지(5800)에 대한 세트 S로 추가되지 않고, 암시된 경계들(5930 내지 5980)이 유지되지 않는다.
일단 모든 구역들이 평가된 경우, 프로세스는 (단계 5775에서) 세트 S의 레이아웃들로부터의 암시된 구역 경계들 뿐만 아니라 암시된 구역 경계들과 교차하는 임의의 구역 경계 그래픽들을 이용하여 구역 분석을 적용한다. 일부 실시예들은 구역 경계 간격들, 교차점들 및 구역 경계들을 식별하기 위해 위의 섹션 II에서 설명된 프로세스들을 사용한다.
프로세스(5700)는 그 다음 (단계 5780에서) 세트 S의 레이아웃들 간의 잠재적 테이블들을 식별한다. 일부 실시예들은 위의 서브섹션 A에서 설명된 프로세스(5300)를 이용하여 잠재적 테이블들을 식별한다(또한 이의 구조를 재구조화한다). 프로세스는 그 다음 (단계 5785에서) 특정 테이블 조건에 만족하지 않는 잠재적 테이블들을 실격시킨다. 프로세스는 그 다음 종료된다. 일부 실시예들은 경계 그래픽들 만으로 불충분한 경우 테이블을 식별하기 위한 가장 증거가 존재하도록 보장하기 위해 추가적인 조건들을 잠재적 테이블들에 가한다. 예를 들어, 일부 실시예들은 모든 셀들이 정확히 하나의 열 및 하나의 칼럼에 걸치거나 셀 높이 및 폭이 페이지 치수에 비해 작거나, 각 경계의 두께가 테이블의 치수에 비해 작은 것을 요구한다. 일부 실시예들은 이 조건들 중 하나, 일부 또는 전부 뿐만 아니라 다른 요건들을 필요로 한다. 도 60은 구역(5810) 및 레이아웃들(5820 및 5825)이 테이블(6000)로 결합되는 반면, 구역들(5805 및 5815)의 콘텐츠는 그대로 남아 있는 것을 도시한다.
일단 문서 부분 내의 모든 테이블들이 식별되면, 일부 실시예들에서 사용자들은 테이블의 개별 셀들을 편집하고, 테이블의 열들 및 칼럼들을 선택하며, 테이블 정보를 지능적으로 스프레드시트로 복사할 수 있다. 더욱이, 텍스트 흐름, 읽기 순서 및 디스플레이가 일부 실시예들에서 테이블들을 식별하고 이에 따라 이들을 재구조화하여 향상될 수 있다.
D. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명된 테이블 식별은 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 기타 핸드헬드나 리소스-제한 장치들 (또는 컴퓨터 판독가능 매체에 저장된 것들) 상에서 실행되는 소프트웨어로 수행된다. 도 61은 문서 내의 테이블들을 식별하기 위한 일부 실시예들의 테이블 식별 애플리케이션(6100)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션(예컨대, 문서 재구조화 애플리케이션)에 통합되는 반면, 다른 실시예들에서는 애플리케이션은 운영 체제 내에서 구현될 수 있다.
테이블 식별 애플리케이션(6100)은 구역 분석 모듈(6105), 테이블 식별 모듈(6110), 구역 경계 연결 모듈(6115), 암시된 구역 정의 모듈(6120), 및 레이아웃 분석 모듈(6125)을 포함한다.
도 61은 또한 문서 콘텐츠(6130)를 도시한다. 구역 분석 모듈(6105)은 문서 콘텐츠(6130)로부터 정보(예컨대, 그래픽에 관한 정보)를 수신한다. 일부 실시예들에서, 구역 분석 모듈(6105)은 도 17로부터의 구역 분석 모듈(1700)과 동일하다. 구역 분석 모듈(6105)은 구역 정보를 구역 경계 연결 모듈(6115) 및 테이블 식별 모듈(6110)로 출력한다.
테이블 식별 모듈(6110)은 구역 분석 모듈(6105)로부터 구역 정보를 수신한다. 일부 경우에서, 이들은 문서의 최종 구역들인 반면, 다른 경우들에서는, 구역 정보는 특정 목적의 테이블 식별을 위한 암시된 구역들을 포함하는 구역들이다. 테이블 식별 모듈(6110)은 수신된 구역 정보에 기초하여 테이블들을 식별하고, 이 정보를 문서 콘텐츠(6145)로 전달한다. 일부 실시예들에서, 테이블 식별 모듈(6110)은 프로세스(5300)의 일부 또는 전부를 수행한다.
구역 경계 연결 모듈(6115)은 구역 분석 모듈(6105)로부터 구역 경계 정보를 수신하고, 이 정보에 기초하여 구역 경계들의 연결된 세트들을 정의한다. 연결된 세트들이 암시된 경계 정의 모듈(6120)로 전달된다. 일부 실시예들에서, 구역 정보 연결 모듈(6115)은 프로세스(5500)의 일부 또는 전부를 수행한다.
레이아웃 분석 모듈(6125)은 문서 콘텐츠(6130)로부터 정보(예컨대, 레이아웃 정보)를 수신한다. 레이아웃 분석 모듈(6125)은 레이아웃들이 잠재적으로 테이블의 일부가 될 수 있는지 여부를 판단하고, 자격이 되는 레이아웃들을 암시된 경계 정의 모듈(6120)로 전달한다. 일부 실시예들에서, 레이아웃 분석 모듈(6125)은 프로세스(5700)의 일부 또는 전부를 수행한다.
암시된 경계 정의 모듈(6120)은 레이아웃 분석 모듈(6125)로부터 레이아웃 정보를 수신하고 구역 경계 연결 모듈(6115)로부터 연결된 구역 경계들의 세트들을 수신한다. 암시된 경계 정의 모듈(6120)은 자신이 수신한 정보에 기초하여 문서의 페이지에 대한 암시된 경계들을 정의하고, 이 정보를 구역 분석 모듈(6105)로 전달한다.
일부 실시예들에서, 위에서 설명된 모듈들 또는 다른 모듈들에 의해 수행되는 프로세스들의 결과들이 (예컨대, 문서 객체 모델의 일부로서)전자 저장소에 저장된다. 문서 객체 모델은 그 다음 사용자가 (터치스크린, 커서 제어 장치 등을 통해) 문서를 리뷰 및/또는 문서와 상호작용할 수 있도록 전자 디스플레이 장치(예컨대, 핸드헬드 장치, 컴퓨터 스크린 등) 상에 문서를 디스플레이하는데 사용될 수 있다.
VI . 그래프들의 결합
일부 실시예들에서, 비구조화된 문서는 단일 요소로 취급되도록 의도되지만 문서에서 그렇게 정의되지 않는 원시 요소들(예컨대, 모양 및 이미지)을 포함한다. 이러한 원시 요소들이 문서의 콤팩트하고 격리된 영역을 차지하는 경우, 이들은 경계 클러스터링이라고 하는 새로운 클러스터 분석 기술을 이용하여 연관될 수 있다. 일부 실시예들에서 경계 클러스터링의 목적은 클러스터의 스프레드를 최소화하는 것인데, 이 스프레드는 클러스터 내의 원시 요소들(예컨대, 모양들)의 집합의 경계들로부터 계산되는 반면, 동시에 클러스터 내의 원시 요소들의 수를 최대화한다. 일부 실시예들에서, 경계들은 모양 또는 모양들의 집합에 대한 경계 박스들에 기초한다.
본 발명의 일부 실시예들은 결합되어야 할 영역의 그래프들(즉, 그래픽 객체들)을 식별하기 위한 방법들을 제공한다. 이러한 연결된 그래프들은 그 다음 추가적인 재구조화를 위해 하나의 객체로 취급될 수 있다. 더욱이, 이들은 보여지고, 선택되고, 줌 처리되고, 복사되고, 이동되고, 편집 등이 되는 경우 하나의 객체로 취급될 수 있다. 일부 실시예들은 결합된 그래프들을 아래의 섹션들 VIII 및 IX에서 설명되는 선택, 디스플레이 및 네비게이션 프로세스들에서 사용하는데 있어 하나의 객체로 취급한다.
도 62는 개별 그래프들을 결합된 그래프들로 결합시키기 위한 일부 실시예들의 프로세스(6200)를 개념적으로 도시한다. 프로세스(6200)는 도 63과 함께 설명된다. 도 63은 페이지(6300) 상의 여러 그래프들의 전부는 아니지만 일부의 결합을 도시한다. 도 62에 도시된 바와 같이, 프로세스(6200)는 (단계 6205에서) 문서의 부분을 수신한다. 문서 부분은 일부 실시예들에서 전체 문서, 문서의 섹션, 페이지 또는 구역이다. 일부 실시예들은 한 번에 전체 문서에 대해 그래프 결합 프로세스를 수행하는 반면, 일부 실시예들은 구역별 또는 페이지별로 프로세스를 수행한다.
프로세스는 (단계 6210에서) 문서 부분 내의 그래프들을 식별한다. 도 63은 6개의 그래프를 포함하는 페이지(6300)를 도시한다: 7개의 꼭지점이 있는 별(6305), 5각형(6310), 8각형(6315), 십자가(6320), 삼각형(6325) 및 5개의 꼭지점이 있는 별(6330).
프로세스는 그 다음 (단계 6215에서) 클러스터 분석을 이용하여 식별된 그래프들의 일부를 결합한다. 프로세스는 그 다음 종료된다. 일부 실시예들은 프로세스(6400)를 참조하여 아래에서 자세히 설명되는 경계 클러스터링이라 하는 클러스터 분석의 형태를 사용한다. 일부 실시예들은 아래 섹션 X에서 설명되는 효율성 기술들을 적용하여 클러스터 분석을 수행한다. 일부 실시예들은 그래프들이 서로 가까이 있고 페이지 또는 구역의 너무 큰 부분을 차지하지 않을 때에만 그래프들을 결합시킨다. 도 63은 7개의 꼭지점으로 된 별(6305) 및 5각형(6310)이 단일 그래프(6335)로 결합되고, 삼각형(6325) 및 5개의 꼭지점으로 된 별(6330)이 단일 그래프(6340)로 결합되는 것을 도시한다. 8각형(6315) 및 십자가(6320)는 페이지(6300) 상에서 격리되기 때문에, 이들은 서로 결합되거나 다른 그래프들에 결합되지 않는다.
A. 경계 클러스터링
도 64는 경계 클러스터링을 수행하여 결합되어야 하는 그래프들을 식별하고 이들 그래프들을 결합시키기 위한 일부 실시예들의 프로세스(6400)를 개념적으로 도시한다. 일부 실시예들에서, 프로세스(6400)는 아래 섹션 X에 설명된 메모리 및 프로세싱 효율성을 이용한다(예컨대, 간접적으로 정렬된 어레이들, 빠른 분할 등). 도시된 바와 같이, 프로세스는 (단계 6405에서) 문서 부분에 대한 그래프들을 수신한다. 문서 부분은 일부 실시예들에서 전체 문서, 문서의 섹션, 페이지 또는 구역이다.
프로세스는 그 다음 (단계 6407에서) 문서 부분 내에 적어도 두 그래프가 있는지 여부를 판단한다. 하나의 그래프가 있거나 그래프가 없는 경우, 그래프들을 결합시키기 위해서 클러스터링을 수행할 필요가 없고, 따라서 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 6410에서) 그래프들을 그려지는 순서로 정렬시킨다. 일부 실시예들에서, 그리기 순서는 객체들이 페이지 상에서 그려지는 시퀀스이다. 종종, 복수의 객체들이 단일 객체로 취급되도록 의도되는 경우, 이들은 시퀀스로 그려진다. 그러나, 일부 실시예들은 다른 휴리스틱, 이를테면 페이지 상의 객체의 위치에 기초하여 정렬한다.
다음으로, 프로세스는 (단계 6415에서) 그리기 순서 내의 제1 그래프를 현재 그래프 g로 설정한다. 프로세스는 그 다음 (단계 6420에서) g가 문서 부분 내의 마지막 그래프인지 여부를 판단한다. g가 마지막 그래프인 경우, 그래프 g 및 다음 그래프 간의 스프레드가 계산될 수 없고, 따라서 프로세스는 아래에서 설명되는 단계(6440)로 진행한다.
그렇지 않고, 그래프 g가 마지막 그래프가 아닌 경우, 프로세스는 (단계 6425에서) 그리기 순서에 있어 그래프 g 및 다음 그래프 간의 스프레드를 계산하고, (단계 6430에서) 어레이에 계산된 스프레드를 저장한다. 일부 실시예들에서, 스프레드는 두 객체들이 서로 얼마나 가까운지의 측정이다. 일부 실시예들은 두 객체들의 경계 박스들을 이용하여 스프레드를 계산한다. 예를 들면, 일부 실시예들은 그래픽 객체들의 세트의 스프레드를 객체들의 세트가 맞는 가장 작은 똑바른 경계 박스의 폭 및 높이의 합을 페이지의 폭 및 높이의 합에 의해 나눈 것으로 계산한다.
도 65는 두 페이지들(6501 및 6502)을 도시하는데, 이들 각각은 스프레드가 계산되는 두 그래픽 객체들을 갖는다. 페이지(6501)는 두 그래픽 객체들(6505 및 6510)을 포함하는 한편, 페이지(6502)도 객체들(6505 및 6510)과 동일한 모양 및 크기를 갖는 두 그래픽 객체들(6515 및 6520)을 포함한다. 도 65는 또한 객체들(6505 및 6510)에 대한 가장 작은 경계 박스(6525) 및 객체들(6515 및 6520)에 대한 가장 작은 경계 박스(6530)를 도시한다. 위에서 언급된 스프레드를 계산하는 방법을 이용하여, 객체들(6505 및 6510)에 대한 스프레드는 (XS1+YS1)/(Xp+XY)인 반면, 객체들(6515 및 6520)에 대한 스프레드는 (XS2+YS2)/(Xp+XY)이다. 일부 실시예들은 대신 스프레드를 페이지의 영역에 의해 나누어진 객체들의 집합에 대한 경계 박스의 영역으로 계산한다. 일부 실시예들은 페이지 크기 이를 테면 객체들 자체의 개별 경계 박스들 대비 객체들 집합에 대한 경계 박스의 크기와 연관되지 않은 방법을 이용한다.
다음으로, 프로세스는 (단계 6435에서) 다음 그래프를 현재 그래프 g로 설정한다. 프로세스는 그 다음 위에서 설명되는 단계(6420)로 진행한다. 일단 모든 스프레드가 계산되었으면 프로세스는 (단계 6440에서) 그래프들의 클러스터들을 정의하기 위해 스프레드들을 차이 클러스터링에 대한 일차 차이들로 사용한다. 일부 실시예들은 위에서 언급된 미국 특허 공개공보 제2007/0250497호에서 설명된 바와 같이 차이 클러스터링을 수행한다. 일부 실시예들의 차이 클러스터링은 입력 값들 간의 차이들만을 요구하고, 입력들의 실제 값들을 필요로 하지 않기 때문에, 스프레드들은 실제 차이들로 올라가지 않더라도 일차 차이들로 사용될 수 있다. 차이 클러스터링으로부터 나오는 클러스터들은 일부 실시예들에서 차이 클러스터들 내의 그래프들 간의 스프레드들에 비해 동일 클러스터들 내의 연속적인 그래프들 간에서 상대적으로 작은 스프레드들을 갖는다.
당업자라면 스프레드 따라서 경계 클러스터링의 개념이 페이지 상의 그래픽 객체들에 한정되지 않음을 알 수 있다. 예를 들어, 스프레드들은 (영역들 보다 부피를 이용하거나 이차원 보다는 3차원의 경계 박스들을 합하여) 3차원 객체들 간에서 계산될 수 있고, 따라서 3차원 객체들을 (예컨대, 비디오 합성 애플리케이션과 같은 3차원 매체 편집 애플리케이션에서) 클러스터링하는데 사용된다.
차이 클러스터링이 사용된 후에, 스프레드들이 일차 차이들로 되고, 그래픽들의 클러스터들이 정의된다. 프로세스(6400)는 (단계 6445에서) 평가되지 않은 클러스터들로부터 클러스터 C를 선택한다. 프로세스는 그 다음 (단계 6450에서) C를 특정 제약값들을 만족하는 그래프들의 서브시퀀스들의 세트로 프로세싱한다. 상이한 실시예들은 상이한 제약값들을 이용하여 결합된 그래프들을 정의한다.
일부 실시예들은 서브시퀀스 내의 객체들이 그리기 순서에 있어 연속적이어야 한다는 요건을 부가한다. 일부 실시예들은 시퀀스 내의 객체들이 클러스터를 두 비어 있는 서브시퀀스들로 분할하는 방법이 없도록 상호 겹치는 것을 요구하는데, 두 비어 있지 않은 서브시퀀스들은 그리기 순서에 있어 연속적이어서, 제1 분할 내의 객체들의 그룹의 똑바른 경계들은 제2 분할 내의 객체들의 그룹의 똑바른 경계들로부터 분리된다. 일부 실시예들에 의해 부가된 제3 요건은 각 서브시퀀스가 밀도 제약값들을 충족하는 것인데, 이는 각 서브시퀀스가 충분히 작은 전체 스프레드를 갖는 충분한 수의 그래프들(예컨대, 2)을 포함하는 것을 보장한다.
일부 실시예들은 위의 조건들의 수정된 버전들을 사용한다. 예를 들어, 똑바른 직사각형 경계들 대신, 일부 실시예들은 이미지의 투명하지 않은 픽셀들 주위의 경로와 같은 더 엄격한 경계들을 이용한다. 일부 실시예들에서, 이들 서브시퀀스들 각각 내의 객체들의 집합은 단일 그래프로 결합된다.
프로세스(6400)는 (단계 6455에서) 평가할 클러스터들이 더 있는지 여부를 판단한다. 클러스터들이 더 남아 있는 경우, 프로세스는 단계(6445)로 진행하여 또 다른 클러스터를 선택하고 이 클러스터를 서브시퀀스들로 프로세싱한다. 그렇지 않고, 모든 클러스터들이 프로세싱된 경우, 프로세스는 종료된다. 그래프들이 결합되었으므로, 이들은 보기, 선택, 줌 처리, 복사, 편집 등의 경우 하나의 객체로 취급될 수 있다. 일부 실시예들은 결합된 그래프들을 아래 섹션 VIII에서 설명되는 선택, 디스플레이 및 네비게이션 프로세스들에서 사용하기 위해 하나의 객체로 취급한다.
B. 클러스터들을 서브시퀀스들로 프로세싱
위에서 기재된 바와 같이, 그래프들의 클러스터들이 식별된 후, 일부 실시예들은 각 클러스터를 서브시퀀스들로 프로세싱하여 최종 결합된 그래프들을 식별한다(그리고 각 결합된 그래프를 구성하는 원시 요소들을 연관시킨다). 도 66은 클러스터를 서브시퀀스들로 프로세싱하기 위한 일부 실시예들의 프로세스(6600)를 도시한다. 일부 실시예들에서, 프로세스(6600)는 각 클러스터에 대해 프로세스(6400)의 단계(6450)에서 수행된다.
도시된 바와 같이, 프로세스(6600)는 (단계 6605에서) 그래프들의 클러스터를 수신한다. 언급된 바와 같이, 일부 실시예들에서, 이 클러스터는 스프레드들을 그리기 순서에 의해 정렬된 그래프들에 대한 일차 차이들로 사용하는 경계 클러스터링의 출력이다. 프로세스는 그 다음 (단계 6607에서) 클러스터가 비어 있는지(즉, 그래프를 포함하지 않는지) 여부를 판단한다. 클러스터가 비어 있는 경우 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 6610에서) 서브시퀀스에 아직 있지 않는 클러스터 내의 제1 그래프를 선택한다. 일부 실시예들에서, 클러스터는 그리기 순서에 의해 정렬되어, 단계(6610)를 처음 통과하는 경우 선택된 그래프는 그래프들을 포함하는 문서에 그려진 클러스터 내의 제1 그래프이다.
프로세스는 그 다음 (단계 6615에서) 선택된 그래프(여기서, 선택된 그래프는 서브시퀀스 내의 유일한 그래프임)를 포함하는 새로운 서브시퀀스를 정의한다. 새로운 서브시퀀스는 선택된 그래프의 경계들을 갖는다. 일부 실시예들에서, 선택된 그래프의 경계들은 그래프를 포함하는 가장 작은 똑바른 경계 박스이다. 다른 실시예들은, 예컨대 그래프의 모든 투명하지 않은 픽셀들을 완전히 감싸는 가장 작은 영역 경로를 이용하여 그래프의 경계들을 다르게 정의한다.
다음으로, 프로세스(6600)는 (단계 6620에서) 클러스터 내에 그래프들이 더 있는지 여부를 판단한다. 클러스터에 그래프가 없는 경우 프로세스는 아래에서 설명되는 단계(6645)로 진행한다. 그렇지 않으면, 프로세스는 (단계 6625에서) 클러스터 내의 다음 그래프를 선택한다. 일부 실시예들에서, 클러스터 내의 다음 그래프는 클러스터 내에 있는 그리기 순서의 다음 그래프이다.
프로세스는 (단계 6630에서) 새로운 그래프의 경계들(즉, 단계(6625)에서 선택된 그래프)이 현재 서브시퀀스의 경계들과 교차하는지 여부를 판단한다. 위에서 언급된 바와 같이, 상이한 실시예들은 그래프의 경계들을 다르게 정의한다. 복수의 그래프들을 포함하는 서브시퀀스의 경계들은 아래에서 설명된다. 새로운 그래프의 경계들이 현재 서브시퀀스의 경계들과 교차하지 않는 경우, 프로세스는 (단계 6640에서) 현재 서브시퀀스를 (예컨대, 서브시퀀스들의 목록에) 저장하고, 위에서 설명되는 단계(6610)로 진행하여, 다음 서브시퀀스를 시작한다. 다음 서브시퀀스는 아직 서브시퀀스 내에 있지 않은 클러스터 내의 첫번째 그래프이기 때문에 단계(6630)에서 최근에 테스트된 그래프로 시작한다.
(단계 6625에서 선택된) 새로운 그래프의 경계들이 현재 서브시퀀스의 경계들과 교차하는 경우, 프로세스는 (단계 6635에서) 새로운 그래프를 서브시퀀스에 추가하고 서브시퀀스의 경계들을 이전 서브시퀀스 경계들과 새롭게 추가된 그래프의 경계들의 교차점이 되도록 수정한다. 프로세스는 그 다음 위에서 설명된 단계(6620)로 진행하여 계속하여 그래프들을 서브시퀀스에 추가 시도한다.
일부 실시예들에서, 복수의 그래프들을 포함하는 서브시퀀스의 경계들은 모든 그래프들을 포함하는 가장 작은 똑바른 경계 박스이다. 다른 실시예들에서, 경계들은 서브시퀀스 내의 그래프들에 대한 모든 똑바른 경계 박스들의 집합이다(이러한 실시예들에서, 서브시퀀스의 경계들은 반드시 직사각형일 필요가 없다). 그래프의 경계들을 투명하지 않은 그래프의 픽셀들을 모두 포함하는 가장 작은 영역 경로로 정의하는 실시예들에서, 경계들은 서브시퀀스 내의 모든 그래프들 주위의 경로가 될 수 있거나 서브시퀀스 내의 각 그래프에 대한 경로들의 집합이 될 수 있다.
일단 클러스터 내의 모든 그래프들이 최초 서브시퀀스들 내에 위치되면, 프로세스는 (단계 6645에서) 제1 서브시퀀스 S1을 선택한다. 일부 실시예들에서, 각 서브시퀀스는 그리기 순서에 있어 인접하는 그래프들을 포함하고 서브시퀀스들은 제1 서브시퀀스가 그리기 순서에 있어 제1 그래프들과 함께하도록 그리기 순서에 기초하여 배열된다.
프로세스는 그 다음 (단계 6650에서) 서브시퀀스들이 더 있는지 여부를 판단한다(즉, 프로세스를 처음 통과하는 경우 하나의 서브시퀀스 많이 있거나 서브시퀀스가 없는지 여부를 판단한다). 서브시퀀스가 더 없는 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 (단계 6655에서) 다음 서브시퀀스 S2를 선택한다.
다음, 프로세스(6600)는 (단계 6660에서) S1 및 S2의 경계들이 교차하는지 여부를 판단한다. 위에서 설명된 바와 같이, 서브시퀀스들의 경계들은 다른 실시예들에서 상이하게 정의된다(즉, 이들은 일부 실시예들에서 똑바른 경계 박스들에 기초하고 다른 실시예들에서 투명하지 않은 픽셀들 주위의 경로들에 기초한다). S1 및 S2의 경계들이 교차하지 않으면, 프로세스는 (단계 6665에서) S2가 S1이 되도록 정의하고 단계(6650)로 진행하여 다음 서브시퀀스를 원래의 S2에 대해 테스트한다.
경계들이 교차하는 경우, 프로세스는 (단계 6670에서) 두 서브시퀀스들을 병합하고 단계(6645)로 진행하여 제1 서브시퀀스를 S1으로 선택한다. 일부 실시예들은 제1 서브시퀀스로 돌아가고 어떤식으로든 병합될 수 없는 서브시퀀스들의 세트가 처음부터 진행할 때까지 프로세싱을 종료하지 않는다. 그러나, 다른 실시예들은 단계(6645)로 돌아가자마자 최근에 병합된 서브시퀀스 이전의 서브시퀀스를 S1으로서 선택하고 제1 서브시퀀스에서 다시 시작하기 보다 해당 지점으로부터 진행함으로써 프로세싱 시간을 절약한다.
일단 클러스터들이 서브시퀀스들로 프로세싱되면, 서브시퀀스들은 위에서 설명된 밀도 제약값들과 같은 제약값들에 대해 테스트될 수 있다. 일부 실시예들은 결합된 그래프 내에서 연관될 그래프들에 대한 서브시퀀스 내의 특정 최소 수의 그래프들(예컨대, 둘, 다섯 등)을 필요로 한다. 일부 실시예들은 (위에서 설명된 바와 같이 계산되는) 스프레드가 특정 수(예컨대, 0.4, 0.5 등)보다 작도록 요구한다.
C. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명된 그래프 결합 프로세스들은 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 핸드헬드 또는 리소스 제한 장치들(또는 컴퓨터 판독가능 매체 상에 저장된 것) 상에서 실행되는 소프트웨어로 구현될 수 있다. 도 67은 결합되어야 할 그래프들을 식별하고 그래프들을 하나의 그래픽으로 연관시키기 위한 일부 실시예들의 그래프 결합 애플리케이션(6700)을 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션(예컨대, 문서 재구조화 애플리케이션)으로 통합되는 반면, 다른 실시예들에서 애플리케이션은 운영 체제 내에서 구현될 수 있다.
도 67은 그래프 결합기(6705), 경계 클러스터링 모듈(6710) 및 스프레드 계산기(6715) 뿐만 아니라 문서 콘텐츠(6725)를 도시한다. 그래프 결합기 모듈은 문서 콘텐츠(6725)로부터 정보를 수신한다. 일부 실시예들에서, 정보는 각 그래프의 위치에 관한 정보이고 그래프들의 그리기 순서이다.
그래프 결합기(6705)는 정보(예컨대, 그래프들의 위치들 및 그리기 순서에 있어 그래프들의 위치)를 스프레드 계산기(6715)로 전달한다. 일부 실시예들의 스프레드 계산기(6715)는 각 연속적인 그래프들의 쌍에 대한 스프레드를 계산하고 이 정보를 경계 클러스터링 모듈(6710)로 전달한다.
경계 클러스터링 모듈(6710)은 그래프 결합기(6705) 및 스프레드 계산기(6715)로부터 정보를 수신하고 (예컨대, 스프레드들의 어레이가 일차 차이들로 취급됨) 수신된 정보에 대해 경계 클러스터링을 수행한다. 경계 클러스터링의 결과들이 다시 그래프 결합기로 전달된다. 일부 실시예들에서, 그래프 결합기(6705)는 경계 클러스터링 모듈로부터 수신된 클러스터들의 추가적인 프로세싱을 수행하여 그래프들의 특정 클러스터들이 단일 그래프들과 연관되어야 하는지 여부를 식별하고, 연관성을 문서 콘텐츠(6725)로 반환한다.
일부 실시예들에서, 위에서 설명된 모듈들 또는 기타 모듈들에 의해 수행되는 프로세스들의 결과들이 (예컨대, 문서 객체 모델의 일부로서) 전자 저장소에 저장된다. 문서 객체 모델은 그 다음 사용자가 (터치스크린, 커서 제어 장치 등을 통해) 문서를 리뷰 및/또는 문서와 상호작용할 수 있도록 전자 디스플레이 장치(예컨대, 핸드헬드 장치, 컴퓨터 스크린 등) 상에 문서를 디스플레이하는데 사용될 수 있다.
VII . 프로세싱 제어를 위한 프로파일들
시각 정보를 문서 내의 구조적 요소들로 해석하는 것은 프로세싱되는 문서 내에 있는 콘텐츠의 유형에 기초할 수 있다. 의미적 재구조화(뿐만 아니라 다른 콘텐츠 프로세싱 기술들)가 따라서 콘텐츠의 유형에 대한 분석을 알맞게 함으로써 향상될 수 있다. 일부 실시예들은 프로세싱될 콘텐츠의 유형을 식별하고 이 콘텐츠의 프로세싱을 콘텐츠의 식별된 유형에 맞게 하기 위한 방법들을 제공한다. 일부 실시예들은 콘텐츠 유형의 식별에 기초하여 콘텐츠 프로세싱을 알맞게 조절하는 것을 위의 섹션 II-VI에서 설명되는 문서 재구조화에 적용한다.
일부 실시예들은 프로파일들을 이용하여 프로세싱될 콘텐츠의 유형을 식별한다. 프로파일은 (P1 ^ P2 ^ P3 ^ … ^ PN) 형태의 논리적 명제를 포함하여, 프로파일은 모든 논리적 술부 PN이 특정 콘텐츠에 대해 참인 경우에만 특정 콘텐츠에 일치한다. 일부 실시예들에서, 프로파일들의 세트는 계층적이다. 프로파일들의 계층적 세트는 프로세싱 내의 상이한 단계들에 도달하는 다른 레벨들의 계층에 대한 프로파일들을 갖는다. 일부 실시예들에서, 낮은 레벨 프로파일로부터의 명령어들은 더 높은 레벨 프로파일로부터의 명령어들에 우선할 수 있다.
도 68은 콘텐츠 프로세싱을 콘텐츠 유형에 맞도록 하기 위한 프로파일들을 이용하는 일부 실시예들의 프로세스(6800)를 개념적으로 도시한다. 도시한 바와 같이, 프로세스는 콘텐츠를 수신한다(단계 6805에서) 콘텐츠는 일부 실시예들에서 재구조화되어야 할 문서이다. 다른 5개의 실시예들에서, 콘텐츠는 문서이지만, 문서 상에서 수행될 프로세싱은 재구조화 외의 분석이다. 콘텐츠는 또한 일부 실시예들에서 다른 유형의 콘텐츠(예컨대, 오디오 및/또는 비디오 콘텐츠)가 될 수 있다. 예를 들어, 일부 실시예들은 비디오 콘텐츠를 분석하여 비디오 콘텐츠를 장면들, 동작들 등의 계층으로 분해할 수 있고 이전 단계들의 결과들에 기초하여 다음의 분석 단계들을 수정할 수 있다.
다음으로, 프로세스는 (단계 6810에서) 상이한 콘텐츠 유형들에 대한 프로파일들에 기초하여 수신된 콘텐츠 유형을 식별한다. 일부 실시예들에서, 프로파일은 모든 논리 진리값(predicate)이 콘텐츠에 대해 참인 경우에만 콘텐츠에 일치하는 하나 이상의 논리 진리값으로 구성되는 논리적 명제를 포함한다. 일부 실시예들에서, 프로파일은 또한 프로파일이 콘텐츠와 일치하면 어떻게 콘텐츠 프로세싱을 수행하는지를 지정한다. 문서 프로세싱의 경우, 프로파일은 일부 실시예들에서 시각적 요소들의 집합에 적용되는 속성들의 집합을 포함한다. 예를 들어, #10 크기 봉투 상에 프린트 되도록 의도되는 문서에 대한 단순화된 프로파일은 (페이지들의 # = 1 ^ 단락들의 # <= 2 ^ 폭 = 9.5" ^ 높이 = 4.125")이 될 수 있다.
도 69는 문서(6900)를 도시한다. 문서 유형을 식별하는 경우, 일부 실시예들은 모든 논리 진리값이 참인 프로파일에 도달할 때까지 복수의 프로파일들을 테스트 한다. 문서(6900)의 경우, 폭 x가 9.5"이고 높이 y가 4.125"이면, 문서(6900)는 #10 봉투로 식별되는데, 이는 두 단락들(6905 및 6910)을 갖는 하나의 페이지만을 갖기 때문이다.
콘텐츠의 유형이 일단 식별되면, 프로세스(6800)는 (단계 6815에서) 식별된 콘텐츠 유형으로 맞춰진 콘텐츠 프로세싱을 수행한다. 프로세스는 그 다음 종료된다. 일부 실시예들에서, 프로세싱을 식별된 콘텐츠 유형으로 맞추는 것은 프로세스를 추가하고 제거하는 것, 프로세스들이 어떻게 수행되는지를 수정하는 것, 및 프로세스들이 수행되는 순서를 수정하는 것을 포함한다. 예를 들어, 문서 재구조화의 경우, 문서가 칼럼, 헤더 또는 꼬리말을 갖지 않는 텍스트 라인들의 단일 페이지라고 결정되면, 문서 재구조화 프로세스는 적절히 맞춰질 수 있다. 일부 실시예들은, 텍스트 라인들을 식별하고, 텍스트 라인들 내의 워드들을 식별하며, 텍스트 라인들을 단락들로 그룹화하지만, 다른 프로세스들(예컨대, 칼럼들 및 레이아웃들을 식별하기 위한 프로세스(4200), 또는 테이블 식별 프로세스)를 수행하지 않는데, 이는 이들이 필요하지 않는 문서 유형에 기초하여 인식되기 때문이다.
A. 계층적 프로파일링
일부 실시예들은 프로파일들의 계층적 세트를 이용하여 콘텐츠 프로세싱을 콘텐츠 유형에 맞춘다. 도 70은 문서 재구조화를 위한 일부 실시예들의 프로파일들(7000)의 계층적 세트를 도시한다. 프로파일들(7000)의 계층적 세트는 두 문서 프로파일들(7001 및 7002), 세 개의 섹션 프로파일들(7005 내지 7007), 8개의 페이지 프로파일들(7010 내지 7017), 및 4개의 구역 프로파일들(7020 내지 7023)을 포함한다.
도시된 바와 같이, 각 문서 프로파일은 자신의 프로파일 트리를 갖는다. 일부 실시예들에서, 일단 문서 프로파일이 식별되면, 이의 계층 트리 내의 섹션 프로파일들만이 테스트될 것이다. 예를 들어, 문서가 문서 프로파일 A(7001)로 식별된 경우, 섹션 프로파일 A(7005) 및 섹션 프로파일 B(7006)만이 테스트된다. 유사하게, 일단 섹션 프로파일(또는 임의의 다른 낮은 레벨 프로파일)이 식별되면, 이 특정 프로파일의 트리 내의 프로파일들만이 테스트될 것이다.
일부 실시예들에서, 일부 프로파일들은 계층 구조의 높은 레벨의 복수의 프로파일들 간에서 공유된다. 예를 들어, 페이지 프로파일 C(7012)가 모든 3개의 섹션 프로파일(7005 내지 7007) 간에서 공유된다. 따라서, 문서의 섹션이 섹션 프로파일 A(7005), 섹션 프로파일 B(7006) 또는 섹션 프로파일 C(7007)로 식별되는지 여부에 따라, 페이지 프로파일 C(7012)는 섹션 내의 각 페이지에 대한 가능한 페이지 프로파일들 중 하나로 테스트된다.
도 71은 콘텐츠에 대한 프로파일들과 일치하고 동적으로 일치된 프로파일에 기초하여 콘텐츠 프로세싱을 구성하는 일부 실시예들의 프로세스(7100)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 7105에서) 프로세싱될 콘텐츠를 수신한다. 일부 실시예들에서, 콘텐츠는 위의 섹션 II 내지 VI에서 설명된 프로세스들에 따라 재구조화되는 문서이다. 다른 실시예들에서, 콘텐츠는 오디오 및/또는 비디오 콘텐츠, 또는 분석될 다른 유형의 콘텐츠이다.
다음으로, 프로세스는 (단계 7110에서) 계층 구조 내의 탑 레벨에 대한 프로파일을 선택한다. 일부 실시예들에서, 특정 프로파일을 선택하는 것은 콘텐츠에 대한 특정 프로파일 내의 논리적 명제들을 평가하고 프로파일이 콘텐츠와 일치한다고 식별하는 것을 포함한다. 일부 실시예들에서 프로세스의 일부 양은 계층 구조 내의 탑 레벨로부터 프로파일을 선택하기 위해 우선 수행되어야 한다. 일부 실시예들에서, 복수의 프로파일들이 일치하는 프로파일을 찾기 전에 테스트될 수 있지만, 한 번에 하나의 프로파일만이 계층 구조의 탑 레벨에서 선택될 수 있다. 예를 들어, 도 70 내의 프로파일들(7000)의 계층적 세트를 참조하면, 문서는 문서 프로파일 A(7001) 또는 문서 프로파일 B(7002)와 일치할 수 있지만, 일단 하나가 일치하면 일치 프로파일이 선택된다.
프로파일을 계층 구조로부터 선택한 후에, 프로세스는 (단계 7115에서) 선택된 프로파일들을 위한 프로세싱을 적용한다. 예를 들어, 문서 재구조화를 참조하면, 콘텐츠가 단순한 한 페이지 문서인 경우, 재구조화 방법들 중 하나의 세트가 적용된다. 한편, 문서가 그림들을 갖는 여러 페이지의 책인 경우, 상이한 세트의 재구조화 방법들이 적용된다. 일부 실시예들은 모든 방법을 한번에 적용하지 않지만, 낮은 레벨의 새로운 프로파일이 선택될 수 있는지 여부를 판단하기 전에 프로파일에 의해 지정된 순서로 한번에 하나의 방법을 적용한다.
다음으로, 프로세스는 (단계 7120에서) 프로세싱이 충분히 진행되어서 계층 구조의 다음레벨로 진행하는지 여부를 판단한다. 일부 실시예들에서, 이는 충분한 프로세싱 방법들이 완료되었고 다음 레벨의 프로파일들이 일치에 대해 테스트될 수 있는 충분한 정보가 계층 구조의 다음 레벨에 대해 이용가능한지 여부를 판단하는 것을 수반한다. 프로세싱이 충분히 진행되지 않으면, 프로세스는 단계(7115)로 진행하여 위에서 설명된 프로세싱 적용을 계속한다.
일단 프로세싱이 계층 구조의 다음 레벨에 대해 충분히 진행되면, 프로세스는 (단계 7125에서) 계층 구조의 다음 레벨에 대한 프로파일을 선택한다. 일부 실시예들에서, 계층 구조의 특정 레벨에서의 각 콘텐츠 개체(예컨대, 섹션, 페이지, 구역 등)에 대해, 단지 하나의 프로파일이 특정 레벨에 대한 시간에서 선택될 수 있다. 예를 들어, 도 70의 프로파일들(7000)의 계층적 세트를 참조하면, 문서 프로파일 A(7001)에 매칭하는 문서 내의 섹션은 섹션 프로파일 A(7005) 또는 섹션 프로파일 B(7006)과 매칭할 수 있지만, 둘 다에는 매칭할 수 없다. 더욱이, 일부 실시예들에서, 콘텐츠 개체에 대한 프로파일의 선택은 위의 콘텐츠 개체들에 대한 프로파일들의 선택에 기초하여 제한된다. 예를 들어, 위의 예에서, 문서가 문서 프로파일 A(7001)에 매칭하였기 때문에, 특정 섹션은 섹션 프로파일 C(7007)에 대해 테스트되지 않을 것이고 따라서 섹션 프로파일 C(7007)에 매칭할 수 없다.
프로세스는 다음 (단계 7130에서) 새롭게 선택된 프로파일들에 기초하여 계층 구조의 이전 레벨들로부터 프로세싱 방법들을 수정한다. 일부 실시예들에서, 임의의 낮은 레벨 프로파일은 높은 레벨 프로파일로부터의 이미 정의된 프로세싱 방법에 우선할 수 있다. 수정들은 프로세싱 방법들을 제거하기, 특정 방법들이 수행되는 방식을 수정하기, 방법들을 추가하기, 방법들이 수행되는 순서를 변경하기 등을 포함할 수 있다. 예를 들어, 프로세스들(예컨대, 위의 섹션 IV에서 설명된 프로세스(3800))이 이미 문서 내의 라인들을 분리하는데 사용된 경우, 칼럼들에 대해 적당한 증거가 있는지 여부에 관한 판단은 페이지가 복잡 또는 단순으로 분류되는지 여부를 판단할 수 있다. 페이지가 단순하면(즉, 칼럼들에 대한 최소 증거), 라인-분리 방법은 일부 실시예들에서 수정되어 라인들을 실제로 분리시키기 보다는 탭들을 라인들 내의 틈들에 삽입한다. 유사하게, 페이지가 구역 경계 그래픽이 없는 단순한 것이면, 구역 분석 방법들은 일부 실시예들에서 제거된다.
방법들을 추가하는 예로서, 특정 문서를 신문으로 식별하는 프로파일은 일부 실시예들에서 기사가 특정 제목을 갖는 특정 페이지 상에서 계속되는 것을 지정하는 레이아웃의 끝에서 텍스트를 검색하는 방법들을 추가할 수 있다. 이러한 방법은 그 다음 문서 두 레이아웃들(또는 구역들) 간의 링크를 정의하여 두 레이아웃들(또는 구역들)이 하나의 기사를 형성한다고 나타내기 위해 타이틀에 대해 지정된 페이지를 검색한다.
다음으로, 프로세싱 방법들이 수정되어, 프로세스(7100)는 (단계 7135에서) 선택된 프로파일들에 대한 프로세싱 방법들을 적용한다. 일부 실시예들에서, 이는 가장 최근에 선택된 프로파일들보다 계층구조의 더 높은 레벨에서 프로파일들에 대한 방법들을 포함한다. 예를 들어, 특정 방법이 문서 프로파일에서 지정되고 선택된 섹션 프로파일이 특정 방법 또는 특정 방법이 수행되는지 여부를 수정하지 않는 경우, 특정 방법은 문서 프로파일에 따라 (이미 수행되지 않았으면) 수행될 것이다. 일부 실시예들은 모든 방법들을 한번에 적용하지 않지만, 대신 더 낮은 레벨에서의 새로운 프로파일이 선택될 수 있는지 여부를 판단하기 전에 프로파일에 의해 지정된 순서로 한 번에 하나의 방법을 적용한다.
다음으로, 프로세스는 (단계 7140에서) 프로파일들의 계층 구조 내에 테스트할 낮은 레벨들이 있는지 여부를 판단한다. 계층 구조 내에 낮은 레벨들이 더 없는 경우, 프로세스는 아래에서 설명되는 단계(7150)로 진행한다. 그렇지 않으면, 프로세스는 (단계 7145에서) 프로세싱이 충분히 진행되어 계층 구조의 다음 레벨로 진행되었는지 여부를 판단한다. 일부 실시예들에서, 이는 충분한 프로세싱 방법들이 완료되었는지 및 다음 레벨에서의 프로파일들이 일치하는지 여부에 대해 테스트될 수 있는 충분한 정보가 계층 구조의 다음 레벨에 대하여 이용될 수 있는지 여부를 판단하는 것을 수반한다. 프로세싱이 충분히 진행되지 않은 경우, 프로세스는 단계(7135)로 진행하여 위에서 설명된 프로세싱을 적용하는 것을 계속한다. 일단 프로세싱이 계층 구조의 다음 레벨에 대해 충분히 진행되면, 프로세스는 단계(7125)로 진행하여 위에서 설명된 계층 구조의 다음 레벨에 대한 하나 이상의 프로파일을 선택한다.
프로세스가 (단계 7140에서) 계층 구조의 낮은 레벨들이 더 없다고 판단한 경우, 프로세스는 (단계 7150에서) 콘텐츠 프로세싱이 완료되었는지 여부를 판단한다. 일부 실시예들에서, 콘텐츠 프로세싱은 모든 프로세싱 방법이 가장 낮은 레벨 프로파일에 대해 적용된 경우 완료된다. 프로세싱이 완료된 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 위에서 설명되는 단계(7135)로 진행하여 콘텐츠 프로세싱을 계속한다.
B. 의미적 재구조화 방법들을 구현하기 위한 계층적 프로파일링 사용
일부 실시예들은 계층적 프로파일을 활용하여 보다 효율적이고 정확하게 위의 섹션 II-VI에서 설명되는 의미적 재구조화 방법들을 수행한다. 일부 실시예들에서, 계층적 프로파일들은 방법들을 추가, 제거, 수정 또는 재수행하는데 사용된다. 일부 실시예들은 임의의 프로파일 매칭이 없는 경우 모든 가능한 재구조화 방법들을 수행하는 디폴트 프로파일을 포함한다. 그러나, 계층 구조 내의 아래의 프로파일이 선택된 경우, 선택된 프로파일은 특정 방법을 수행할지 여부 및/또는 특정 방법을 어떻게 수행할지 여부에 관하여 디폴트 프로파일에 우선할 수 있다.
일부 실시예들에서, 프로파일 매칭은 프로세싱의 다른 단계들에서 발생한다. 이에 따라, 임의의 주어진 시간에서 활성화되는 프로파일들의 세트는 프로세싱을 통해 변경될 수 있고, 방법들의 상속(inheritance)은 각 새로운 프로파일이 활성화된 후에 재평가되어야 한다. 새롭게 활성화된 프로파일은 프로세싱 방법들을 재순서화, 추가 또는 제거할 수 있기 때문에, 일부 실시예들은 또한 콘텐츠 프로세싱 동안 상속의 효과를 변경한다.
도 72는 계층적 프로파일을 이용하여 문서 재구조화를 수행하기 위한 일부 실시예들의 프로세스(7200)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 7205에서) 문서를 수신한다. 일부 실시예들에서, 문서는 의미적 재구조화 기술들을 이용하여 재구조화되는 벡터 그래픽 문서(예컨대, PDF 문서)이다.
다음으로, 프로세스(7200)는 (단계 7210에서) 문서에 대한 프로파일을 식별한다. 일부 실시예들에서, 처음에 모든 재구조화 방법을 수행하는 디폴트 프로파일이 지정된다. 그러나, 일부 실시예들은 문서의 고유 속성들(예컨대, 페이지 수, 페이지들의 크기 등)에 기초하여 임의의 재구조화 방법들을 적용하지 않고 문서 프로파일을 식별할 수 있다.
일단 최초 프로파일이 식별되면, 프로세스는 (단계 7215에서) 식별된 프로파일과 연관된 재구조화 방법들을 식별한다. 초기 프로파일이 단순히 디폴트 프로파일인 경우, 모든 가능한 방법들이 식별될 것이다. 그러나, 프로파일이 식별된 문서 프로파일이거나 계층 구조 내의 더 낮은 레벨의 프로파일인 경우, 일부 경우들에서 재구조화 방법들의 일부만이 식별될 것이다. 예를 들어, 일부 프로파일들은 특정 프로세스를 수행하기 위한 구현을 명확히 정의하지 않지만, 또한 프로세스를 수행하지 않도록 지정하지도 않는다.
프로세스는 그 다음 (단계 7220에서) 식별된 방법들 중 하나를 선택한다. 일부 실시예들에서, 방법은 재구조화 방법들을 수행하기 위한 특정 순서에 기초한다. 예를 들어, 일부 실시예들의 디폴트 프로파일은 재구조화 방법들을 구현하기 위한 디폴트 순서를 지정한다. 디폴트 순서는, 예컨대 구역 분석 방법들을 우선 수행하고, 그 다음 텍스트 라인들을 식별하며, 그 다음 가이드 및 여백 분석을 수행하는 것을 지정할 수 있다.
일부 실시예들에서, 방법들을 식별하는 것은 현재 프로파일에 의해 제외되는 방법들을 식별하는 것을 포함한다. 예를 들어, 재구조화 프로세스들은 페이지에 대한 잠재적 구역 경계들을 이미 식별하였다. 일부 실시예들에서, 적어도 특정 밀도의 구역 경계들이 있고, 텍스트 패턴들이 이에 따라 매칭하는 경우, 페이지는 거리 지도로 식별된다. 따라서, 구역 분석의 나머지(예컨대, 구역들을 식별하는 것)는 수행되지 않을 것인데, 이것이 페이지를 문서의 저자에 의해 페이지의 별도의 영역들이 되도록 의도되지 않은 과도한 수의 작은 영역들로 나누기 때문이다.
유사하게, 문서가 워드 프로세싱 문서라고 지정하는 문서 프로파일은 일부 실시예들에서 칼럼 식별을 위한 방법을 포함한다. 그러나, 문서 내의 특정 페이지가 임베디드 콘텐츠를 가지면, 특정 페이지에 대한 프로파일은 해당 방법을 수행하지 않도록 하는 명령어들을 갖는 칼럼 식별 단계에 우선할 수 있다.
일단 방법이 선택되면, 프로세스(7200)는 방법에 대한 구현을 선택한다. 일부 실시예들에서, 활성(즉, 선택된) 프로파일들은 방법을 수행할 수 있거나, 계층 구조 내의 높은 활성 프로파일로부터 방법의 구현을 물려 받을 수 있다. 프로세스는 (단계 7225에서) 선택된 방법이 현재(즉, 가장 낮은 활성 레벨) 프로파일에 대해 명확히 정의되는지 여부를 판단한다. 선택된 방법이 명확히 정의된 경우, 프로세스는 (단계 7230에서) 현재 프로파일에 대한 방법의 구현을 선택한다. 프로세스는 그 다음 아래에서 설명되는 단계(7250)로 진행한다.
그렇지 않으면, 프로세스는 (단계 7235에서) 선택된 방법이 계층 구조의 더 높은 레벨에서의 활성 프로파일에 대해 정의되는지 여부를 판단한다. 프로세스가 계층 구조 내의 보다 높은 활성 프로파일에 대해 정의되는 경우, 프로세스는 (단계 7240에서) 보다 높은 레벨 활성 프로파일로부터 방법의 구현을 선택한다. 프로세스는 그 다음 아래에서 설명되는 단계(7250)로 진행한다. 그렇지 않으면, 방법은 (단계 7245에서) 방법의 디폴트 구현을 선택한다.
도 73은 어떻게 일부 실시예들이 특정 방법을 구현하는 가장 낮은 레벨 활성 프로파일을 물려 받는지를 도시한다. 도면은 문서 재구조화 프로파일들의 계층 구조(7300)를 도시한다. 계층 구조는 모든 방법에 대한 디폴트 구현의 세트(7305), 다양한 문서 프로파일들에 대한 구현들의 세트들(7310), 다양한 섹션 프로파일들에 대한 구현들의 세트들(7315), 다양한 페이지 프로파일들에 대한 구현들의 세트들(7320), 및 다양한 구역 프로파일들에 대한 구현들의 세트들(7325)을 포함한다. 점선으로 도시된 바와 같이, 구역 프로파일 1(7330)은 현재(가장 낮은 레벨) 활성 프로파일이고, 한편 페이지 프로파일 1(7335), 섹션 프로파일 X(7340) 및 문서 프로파일 2(7345)도 활성이다.
구역 프로파일 1(7330)이 현재 활성 프로파일인 것과 같이, 특정 방법(예컨대, 가이드 식별)을 구현하는 시도는 구역 프로파일 1(7330)에 대한 구현들의 세트를 검색하여 이것이 특정 방법에 대한 구현을 명확히 정의하고 있는지 여부를 판단한다. 구역 프로파일 1(7330)이 명확히 구현을 정의하고 있으면, 이 구현이 선택된다. 그렇지 않으면, 활성 페이지 프로파일 1(7335)가 조사된다. 활성 프로파일들이 특정 방법의 구현이 정의되거나 모든 방법에 대한 디폴트 구현의 세트(7305)에 도달될 때까지 조사되어 계층 구조를 올라간다. 방법을 구현하는 가장 낮은 레벨 활성 프로파일이 식별된 경우, 이 구현은 현재 활성 프로파일에 의해 상속된다. 어떠한 활성 프로파일도 방법을 수행하지 않으면, 현재 활성 프로파일은 디폴트 프로파일로부터 구현을 상속한다.
프로세스(7200)가 방법에 대한 구현을 선택한 후, 프로세스는 (단계 7250에서) 선택된 구현을 이용하여 재구조화를 수행한다. 일부 실시예들에서, 수행된 재구조화는 위의 섹션 II-VI에서 설명된 하나 이상의 프로세스를 포함한다.
다음으로, 프로세스는 (단계 7255에서) 신규 프로파일이 식별되었는지 여부를 판단한다. 일부 실시예들은 각 방법이 수행된 후에, 모든 이용가능한 재구조화 데이터를 프로파일 매칭 엔진으로 보낸다. 일부 실시예들의 프로파일 매칭 엔진은 수신된 정보에 기초하여 특정 프로파일들(예컨대, 현재 활성 프로파일 아래의 계층 구조의 다음 레벨에 있는 프로파일들)을 테스트할 충분한 정보가 있는지 여부를 판단한다. 충분한 정보가 있는 경우, 프로파일 매칭 엔진은 프로파일들 내의 다양한 논리 진리값들(predicates)에 대한 정보를 테스트한다. 일부 실시예들은 가장 적은 작업량에 가장 매칭하거나 이를 필요로 할 것 같은 것들이 우선 테스트되도록 프로파일들을 정렬시킨다. 프로파일 매칭은 아래 서브섹션 C에서 더 자세히 설명된다.
새로운 프로파일이 식별되는 경우, 프로세스는 (단계 7265에서) 문서의 재구조화가 완료되었는지 여부를 판단한다. 일부 실시예들에서, 재구조화는 활성 프로파일들의 세트에 의해 지정된(그리고 더 낮은 레벨의 활성 프로파일에 의해 제거되지 않은) 모든 방법들이 완료된 경우에 완료된다. 재구조화가 완료된 경우, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 단계(7220)로 진행하여 위에서 설명된 다음 식별된 방법을 선택한다.
새로운 프로파일이 식별된 경우, 프로세스(7200)는 (단계 7260에서) 새로운 프로파일에 의해 지정된 임의의 재구조화 결과들을 제거한다. 구체적으로, 수행되어야 하거나 수행되지 말아야 할 특정 방법들을 지정하는 것에 더하여, 일부 실시예들의 프로파일들은 특정 방법들의 결과들이 원상태로 되어야 하는 것을 지정한다. 예를 들어, 구역 분석 방법들이 수행된 후에도, 프로파일은 구역 정보(경계들, 교차점들, 구역들 등)가 결과들로부터 제거되어야 하고 구역 분석이 여러 다른 방법들이 수행된 후에 다시 수행되어야 한다고 지정할 수 있다. 프로세스는 그 다음 위에서 설명되는 단계(7215)로 진행하고, 재구조화가 완료될 때까지 진행한다.
C. 프로파일 매칭
위에서 지적된 바와 같이, 일부 실시예들에서, 프로파일은 프로파일에 대해 모두 참이어야 하는 논리 진리값의 세트이다. 일부 실시예들은 콘텐츠 프로세싱 결과들을 수신하고, 현재 활성 프로파일에 대한 프로파일들의 다음 레벨을 테스트하기 위한 충분한 정보가 제공되는지 여부를 판단하며, 그 다음 프로파일들에 대해 콘텐츠 프로세싱 결과들을 테스트하는 프로파일 매칭 엔진을 사용한다. 일부 실시예들은 결과들이 도착할 것 같은 순서 뿐만 아니라 어느 프로파일들이 가장 매칭할 것 같은지에 기초하여 프로파일들을 테스트하기 위한 특정 순서를 지정한다.
도 74 내지 77은 4개의 상이한 페이지들에 대한 일부 실시예들의 예시적인 페이지 프로파일 매칭 프로세스를 도시한다. 도 74는 4개의 페이지 프로파일들을 도시한다: 단순 페이지(7401), 표준 페이지(7402), 리치(rich) 페이지(7403), 및 레이아웃 페이지(7404). 프로파일들의 각각은 적어도 하나의 논리 진리값을 포함한다: 구체적으로 프로파일(7401)은 3개의 진리값(7411 내지 7413)을 포함하고, 프로파일(7402)은 4개의 진리값(7421 내지 7424)를 포함하며, 프로파일(7403)은 2개의 진리값(7431 및 7432)를 포함하고, 프로파일(7404)은 하나의 진리값만을 포함한다.
도 74는 도시된 순서로 페이지 프로파일들에 대해 테스트되는 페이지(7400)를 또한 도시한다. 페이지(7400)는 그래픽 객체(7450) 및 텍스트 라인들(7460)만을 포함한다. 페이지(7400)의 바디는 단지 하나의 자식을 갖고(자식들이 없는 페이지 경계들), 구역에 대한 프로파일은 하나의 레이아웃 내에 하나의 텍스트 칼럼만이 있기 때문에 단순하다. 일부 실시예들에서, 프로파일이 일단 매칭되면, 다른 것들은 테스트되지 않는다. 도 74 내의 점선들은 페이지(7400)에 대한 페이지 프로파일을 결정하기 위해 프로파일 매칭 엔진에 의해 사용되는 진리값들을 통한 경로를 도시한다. 우선, 엔진은 페이지의 바디가 단지 하나의 자식을 갖는지 여부를 판단한다(진리값(7411)). 이 진리값이 참으로 평가되기 때문에, 엔진은 자식이 구역 자식을 갖지 않는지 여부를 판단한다(진리값(7412), 또한 참). 마지막으로, 엔진은 구역 프로파일이 단순하지 여부를 판단한다(즉, 하나의 레이아웃 내에 단지 하나의 텍스트 칼럼이 있는지)(진리값(7413), 또한 참). 모든 세 개의 진리값이 페이지(7400)에 대해 참이기 때문에, 프로파일 매칭 엔진은 페이지(7400)가 단순 페이지라고 결정한다. 따라서, 특정 방법들(예컨대, 칼럼 식별)이 페이지(7400)에 대해 재거될 수 있다.
도 75는 페이지 프로파일들(7401 내지 7404)에 대해 테스트되는 제2 페이지(7500)를 도시한다. 페이지(7500)는 그래픽 객체(7540), 헤더 라인들(7545), 및 두 텍스트 라인들의 칼럼(7550)을 포함한다. 페이지(7500)의 바디는 하나의 자식만을 갖고(자식을 갖지 않는 페이지 경계들), 구역 내의 텍스트는 헤더이고 두 개의 텍스트 칼럼이다. 도 75 내의 점선들은 페이지(7500)에 대한 페이지 프로파일을 결정하기 위해 프로파일 매칭 엔진에 의해 사용되는 진리값들을 통한 경로를 도시한다. 우선, 엔진은 페이지의 바디가 오직 하나의 자식을 갖는지 여부를 판단한다(진리값(7411)). 이 진리값이 참으로 평가되기 때문에, 엔진은 자식이 구역 자식들을 갖지 않는지 여부를 판단한다(진리값(7412), 또한 참). 엔진은 그 다음 구역 프로파일이 단순한지 여부를 판단한다(진리값(7413), 거짓). 헤더 및 두 칼럼이 있기 때문에, 구역 프로파일은 단순하지 않고, 따라서 진리값(7413)은 거짓이며 매칭 엔진은 다음 프로파일을 체크한다. 진리값들(7421 내지 7424)은 모두 페이지(7500)에 대해 참이고, 따라서 프로파일 매칭 엔진은 페이지(7500)가 표준 페이지라고 결정한다. 이들이 또한 모두 도 74 내의 페이지(7400)에 대해 참이지만, 단순 페이지 프로파일(7401)이 우선 평가되기 때문에 (그리고 매칭되기 때문에), 표준 페이지 프로파일(7402)은 페이지(7400)에 대해 체크되지 않는다.
도 76은 페이지 프로파일들(7401 내지 7404)에 대해 테스트되는 제3 페이지(7600)를 도시한다. 페이지(7600)는 텍스트, 사이드바, 중심 콜-아웃 주위의 메인 레이아웃을 갖는 헤더 구역, 및 텍스트를 갖는 아래 구역을 포함하는 여러 자식들을 갖는 메인 구역을 포함한다. 도 76 내의 점선들은 페이지(7600)에 대한 페이지 프로파일을 결정하기 위해 프로파일 매칭 엔진에 의해 사용되는 진리값들을 통한 경로를 도시한다. 우선, 엔진은 페이지의 바디가 단지 하나의 자식을 갖는지 여부를 판단한다(진리값(7411)). 이 진리값은 참으로 평가되기 때문에, 엔진은 자식이 구역 자식들을 갖지 않는지 여부를 판단한다(진리값(7412), 거짓). 주요 구역이 다양한 자식들을 갖기 때문에, 진리값(7412)은 거짓이고 매칭 엔진은 다음 프로파일을 체크한다. 진리값(7422)은 동일한 이유로 거짓이고, 따라서 매칭 엔진은 제3 프로파일로 이동하고, 레이아웃들의 수가 작고 페이지가 메인 흐름 레이아웃(중심이 같은 사각형들 주위를 감싸는 레이아웃)을 갖기 때문에 진리값들(7431 및 7432)이 참으로 평가된다. 따라서, 페이지(7500)는 리치 페이지로 분류된다.
도 77은 페이지 프로파일들(7401 내지 7404)에 대해 테스트되는 제4 페이지(7700)를 도시한다. 페이지(7700)는 그래픽들을 갖는 큰 구역 및 텍스트를 갖는 섬 뿐만 아니라 텍스트를 갖는 작은 구역을 포함한다. 도 77 내의 점선들은 페이지(7400)에 대한 페이지 프로파일을 결정하기 위해 프로파일 매칭 엔진에 의해 사용되는 진리값들을 통한 경로를 도시한다. 우선, 엔진은 페이지의 바디가 단지 하나의 자식을 갖는지 여부를 판단한다(진리값(7411)). 이 진리값은 거짓으로 평가되기 때문에, 매칭 엔진은 (동일한 이유로 실패하는) 다음 프로파일을 체크한다. 제3 프로파일에서, 진리값(7432)은 페이지(7700)가 메인 흐름 레이아웃을 갖지 않기 때문에 거짓이다. 진리값(7441)은 항상 참이고, 따라서 페이지(7700)는 레이아웃 페이지로 분류된다. 일단 페이지가 임의의 이전 프로파일들에 매칭하지 못하면, 이는 자동적으로 레이아웃 페이지로 분류되기 때문에, 진리값(7441)은 항상 참이다. 일단 프로파일이 매칭되면, 재구조화 방법들은 프로파일 내의 명령어들에 따라 수행, 제거 등이 될 수 있다.
VIII . 관심 영역들의 식별 및 선택, 및 문서의 네비게이션( navigation ) 및 디스플레이
e-북 리더와 같은 문서 보기 애플리케이션들은 종종 어떻게 문서를 가장 잘 디스플레이하고 문서 내에서 네비게이팅하는지를 알 필요가 있다. 이는 특히 한번에 문서의 전체 페이지들을 적절하게 디스플레이할 수 없는 작은 스크린 장치들 상에서 중요하다. 예를 들어, 일부 경우에서, 문서 보기는 콘텐츠 링크들의 테이블 내의 엔트리가 문서의 특정 섹션과 연결되거나, 문서의 두 섹션들이 연관되는(즉, 콜-아웃이 특정 기사의 일부이거나, 하나의 칼럼이 다음으로 흐르는) 것을 인식할 수 있어야 한다.
본 발명의 일부 실시예들은 문서의 디스플레이 및 네비게이션에 대한 문서 재구조화(즉, 단락 및 칼럼 정보, 테이블 정보 등)로부터 얻어진 정보를 이용한다. 구체적으로, 일부 실시예들은 작은 스크린 장치들(예컨대, 매체 재생기, 셀 폰 등) 상에서 디스플레이 및 네비게이션를 위해 의미적으로 재구조화된 문서들의 디스플레이 및 네비게이션를 조정한다.
A. 관심 영역들의 식별 및 선택
일부 실시예들은 의미적으로 재구조화된 문서 내의 관심 영역을 식별 및 선택하고, 그 다음 관심 영역의 선택에 기초하여 문서의 디스플레이를 수정하기 위한 방법들을 제공한다. 도 78은 일부 실시예들에서 관심 위치의 식별에 기초하여 문서를 디스플레이하기 위한 프로세스(7800)를 개념적으로 도시한다. 프로세스(7800)는 도 79와 함께 설명된다. 도 79는 관심 위치가 선택되고 디스플레이가 본 발명의 일부 실시예들에 따라 수정되는 작은 스크린 장치 상의 시퀀스(7900)(7905 내지 7920)를 도시한다.
도 78에 도시된 바와 같이, 프로세스(7800)는 (단계 7805에서) 의미적으로 재구조화된 문서 내의 관심 위치의 표시를 수신한다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션들 II-VI에서 설명된 문서 재구조화의 결과인 문서 객체 모델을 포함한다. 일부 실시예들에서의 문서 객체 모델은 이것이 문서 재구조화 프로세스를 통해 콘텐츠 정보로 채워진 후에, 위의 섹션 II에서 설명된 구역 그래프를 포함한다. 일부 실시예들의 문서 객체 모델은 또한 콘텐츠의 읽기 순서(예를 들어, 칼럼, 단락, 이미지 등의 읽기 순서)를 표시한다.
일부 실시예들은 관심 위치를 디스플레이 상의 지점의 선택으로 표시하는 것을 수신한다. 예를 들어, 선택은 커서 제어 장치(예컨대, 마우스, 터치 패드 등)로 이루어질 수 있다. 관심 위치는 또한 사용자가 스크린을 두드려(예컨대, 싱글-탭, 더블-탭, 손가락으로 집기 움직임 등) 터치스크린 장치 상에서 표시될 수 있다. 도 79를 참조하면, 시퀀스(7900)는 (단계 7905에서) 문서의 일부를 디스플레이하는 디스플레이(7930) 상의 지점을 선택하는 사용자(7925)를 보여준다. 관심 위치(7935)는 사용자가 스크린을 터치하여 선택을 하는 디스플레이(7930) 내의 위치에서 (단계 7910에서) 도시된다.
다음으로, 프로세스(7800)는 (단계 7810에서) 의미적으로 재구조화된 문서 내의 관심 영역을 식별한다. 시퀀스(7900)는 (단계 7915에서) 단락(7940)이 관심 위치(7935)의 선택에 기초하여 관심 영역으로 식별된 것을 보여준다. 일부 실시예들은 관심 위치가 관심 위치(7935)의 경우와 같이 단락의 경계 박스 내에 있는 경우 단락을 관심 영역으로 식별한다.
관심 영역을 식별한 후, 프로세스(7800)는 (단계 7815에서) 필요한 변형을 적용하여 관심 영역을 디스플레이 장치의 보기 영역에 위치시킨다. 일부 실시예들에서, 변형들은 프로세스들(8000 및 8100)에 관하여 아래에서 설명되는 바와 같이 회전, 줌, 및 이동의 조합을 포함한다. 다음으로, 프로세스는 (단계 7820에서) 적용된 변형에 기초하여 문서를 그린다. 그 다음 프로세스는 종료된다. 시퀀스(7900)는 (단계 7920에서) 단락(7940)이 지정된 변형에 따라 수직으로 및 수평으로 줌 인되고 중심에 놓인 것을 보여준다. 일부 실시예들에서, 프로세스는 원래의(즉, 비구조화된) 문서를 디스플레이하지만, (예컨대, 구조화된 문서로부터의) 구조적 요소들의 위치들의 정보를 이용하여 문서를 보여주고 줌 처리한다.
도 80은 관심 영역을 식별하고 변형을 적용하여 디스플레이 장치 상에 관심 영역을 드리우기 위한 일부 실시예들의 자세한 프로세스(8000)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스(8000)는 (단계 8005에서) 관심 위치를 수신한다. 일부 실시예들에서, 관심 위치는 사용자의 선택(예컨대, 커서 제어 장치를 통하거나 터치 스크린을 통한 선택)에 기초하여 사용된다.
관심 위치에 기초하여, 프로세스는 그 다음 (단계 8010에서) 수신된 관심 위치에 기초하여 의미적으로 재구조화된 문서 내의 선택된 객체를 결정한다. 일부 실시예들에서, 선택된 객체는 문자, 워드, 텍스트 라인, 이미지 등이 될 수 있다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션 II-VI에서 설명된 문서 재구조화의 결과인 문서 객체 모델(document object model; DOM)을 포함한다. 일부 실시예들에서 문서 객체 모델은 문서 재구조화 프로세스를 통한 콘텐츠 정보로 채워진 후 위의 섹션 II에서 설명된 구역 그래프를 포함한다.
프로세스는 다음에 (단계 8015에서) 단락 또는 그래픽 객체에 도달할 때까지 문서 계층 구조로 넘어간다. 일부 실시예들에서, 문서 계층 구조는 콘텐츠 정보(즉, DOM)로 채워진 구역 그래프이다. 선택된 객체가 워드인 경우, 일부 실시예들에서 프로세스는 워드로부터 워드를 포함하는 텍스트 라인으로 텍스트 라인을 포함하는 단락으로 계층 구조를 올라간다.
프로세스는 그 다음 (단계 8020에서) 식별된 객체가 단락인지 여부를 판단한다. 식별된 객체가 단락이 아닌 경우, 이는 그래픽 객체이다. 일부 실시예들에서, 그래픽 객체는 임의의 모양, 이미지, 또는 결합된 그래프(즉, 합성 그래픽 객체)가 될 수 있다. 식별된 객체가 그래픽 객체인 경우, 프로세스는 (단계 8025에서) 관심 직사각형(rectangle of interest; ROI)을 식별된 객체의 똑바른 경계 박스로 정의한다. 프로세스는 그 다음 (단계 8030에서) ROI의 폭 및 높이가 디스플레이 영역의 폭 및 높이보다 크기 않도록 줌 처리한다. 프로세스는 그 다음 아래에서 설명되는 단계(8060)로 진행한다.
식별된 객체가 단락인 경우, 프로세스는 (단계 8035에서) 단락의 부모 칼럼의 폭을 갖고 단락의 높이를 갖는 직사각형을 정의한다. 프로세스는 그 다음 (단계 8040에서) 단락에 대한 임의의 회전을 직사각형에 적용하고 ROI를 회전된 직사각형의 똑바른 경계 박스로 정의한다. 단락은 일부 실시예들에서 이것이 문서 객체 모델 내의 회전 그룹 내에 있으면 회전된다. 일부 실시예들은 회전 그룹을 섹션 II에서 설명된 바와 같이 정의한다.
프로세스는 그 다음 (단계 8045에서) (회전 전의) 단락 기준선들이 디스플레이 영역의 대각선보다 더 가파른지 여부를 판단한다. 예를 들어, 디스플레이 영역이 정사각형인 경우, 기준선들이 45도보다 가파르거나 덜 가파른지가 판단된다. 단락 기준선들이 디스플레이의 대각선보다 가파른 경우, 프로세스는 (단계 8050에서) ROI가 디스플레이 영역의 높이보다 더 크지 않도록 줌 처리한다. 프로세스는 그 다음 아래에서 설명되는 단계(8060)로 진행한다. 한편, 단락 기준선들이 디스플레이 영역의 대각선보다 더 가파르지 않은 경우, 프로세스는 ROI가 (단계 8055에서) 디스플레이 영역의 폭보다 더 크지 않도록 줌 처리한다.
다음으로, 프로세스(8000)는 (단계 8060에서) (위의 단계들에서 정의된) ROI가 수평으로 디스플레이 영역에 맞는지 여부를 판단한다. ROI가 수평으로 맞는 경우, 프로세스는 (단계 8065에서) ROI를 수평선 상에서 중심에 놓는다. 프로세스는 그 다음 아래에서 설명되는 단계(8075)로 진행한다. 그렇지 않으면, 프로세스는 (단계 8070에서) 관심 위치를 수평선 상의 중심에 놓는다. 프로세스는 그 다음 (단계 8075에서) ROI가 수직으로 디스플레이 영역에 맞는지 여부를 판단한다. ROI가 수직으로 맞는 경우, 프로세스는 (단계 8080에서) 수직선 상에 ROI를 중심에 둔다. 프로세스는 그 다음 아래에서 설명되는 단계(8087)로 진행한다. 그렇지 않으면, 프로세스는 (단계 8085에서) 관심 위치를 수직선 상의 중심에 둔다.
다음으로, 프로세스는 (단계 8087에서) 관심 위치를 포함하는 페이지의 바닥 또는 맨 위 가장자리가 디스플레이 영역 내에 있는지 여부를 판단한다. 그러한 경우, 프로세스는 (단계 8090에서) 보이는 페이지 가장자리를 디스플레이 영역의 대응하는(즉, 맨 위 또는 맨 아래) 가장자리로 움직여 하나의 페이지 만이 디스플레이되고 전체 디스플레이 영역이 수직으로 채워지도록 한다. 프로세스는 그 다음 (단계 8092에서) 관심 위치를 포함하는 페이지의 오른쪽 또는 왼쪽 가장자리가 디스플레이 영역 내에 있는지 여부를 판단한다. 그러한 경우, 프로세스는 (단계 8095에서) 보이는 페이지 가장자리를 디스플레이 영역의 대응하는(즉, 오른쪽 또는 왼쪽) 가장자리로 이동시켜 오직 하나의 페이지만이 디스플레이되고 전체 디스플레이 영역이 수직으로 채워지도록 한다. 마지막으로, 프로세스는 (단계 8197에서) 적용되는 위의 변형들 모두로 디스플레이 영역을 다시 드리운다. 프로세스는 그 다음 종료된다.
일부 실시예들은 다른 변형 조합(예컨대, 줌, 이동, 회전 등)을 이용하여 선택된 관심 영역을 디스플레이한다. 예를 들어, 프로세스(8000)가 그래픽 객체인 관심 영역에 비해 단락이 관심 영역에 대해 어떻게 상이하게 줌 처리를 할지 결정하는 반면, 다른 실시예들은 줌이 모든 관심 영역에 대해 동일하도록 관심 영역을 정의한다. 예를 들어, 아래에서 설명된 프로세스(8100)는 이러한 방식으로 관심 영역에 줌 처리한다.
도 81은 관심 영역을 식별하고 변형을 적용하여 디스플레이 장치 상에 관심 영역을 드리우기 위한 일부 실시예들의 자세한 프로세스(8100)를 개념적으로 도시한다. 프로세스(8100)는 위에서 설명된 프로세스(8000)와 유사하다. 일부 실시예들에서, 사용자는 이들이 프로세스(8000) 또는 프로세스(8100)에서 줌 변형들을 선호하는지 여부를 선택할 수 있다. 다른 실시예들은 두 프로세스 중 하나를 구현한다. 도시된 바와 같이, 프로세스(8100)는 (단계 8105에서) 관심 위치를 수신한다. 일부 실시예들에서, 관심 위치는 사용자에 의한 선택(예컨대, 커서 제어 장치, 또는 터치스크린을 통한 선택)에 기초하여 사용된다.
관심 위치에 기초하여, 프로세스는 그 다음 (단계 8110에서) 수신된 관심 위치에 기초하여 의미적으로 재구조화된 문서 내의 선택된 객체를 결정한다. 일부 실시예들에서, 선택된 객체는 문자, 워드, 텍스트 라인, 이미지 등이 될 수 있다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션 II-VI에서 설명된 문서 재구조화의 결과인 문서 객체 모델을 포함한다. 일부 실시예들에서 문서 객체 모델은 이것이 문서 재구조화 프로세스를 통해 콘텐츠 정보로 채워진 후에 위의 섹션 II에서 설명된 구역 그래프를 포함한다.
프로세스(8115)는 (단계 8115에서) 다음으로 단락 또는 그래픽 객체에 도달할 때까지 문서 계층 구조를 올라간다. 일부 실시예들에서, 문서 계층 구조는 콘텐츠 정보로 채워진 구역 그래프이다. 만약 선택된 객체가 워드이면, 일부 실시예들에서 프로세스는 워드로부터 워드를 포함하는 텍스트 라인 텍스트 라인을 포함하는 단락으로 계층 구조를 올라간다.
프로세스는 그 다음 (단계 8120에서) 식별된 객체가 단락인지 여부를 판단한다. 만약 식별된 객체가 단락이 아니면, 이는 그래픽 객체이다. 일부 실시예들에서, 그래픽 객체는 임의의 모양, 이미지, 또는 결합된 그래프(즉, 합성 그래픽 객체)가 될 수 있다. 식별된 객체가 그래픽 객체인 경우, 프로세스는 (단계 8125에서) 관심 직사각형(ROI)을 식별된 객체의 똑바른 경계 박스로 정의하고 그 다음 아래에서 설명되는 단계(8150)로 진행한다.
식별된 객체가 단락인 경우, 프로세스는 (단계 8135에서) 단락의 부모 칼럼의 폭 및 단락의 높이를 갖는 직사각형을 정의한다. 프로세스는 그 다음 (단계 8140에서) 단락에 대한 임의의 회전을 직사각형에 적용한다. 단락은 이것이 일부 실시예들에서 문서 객체 모델내의 회전 그룹 내에 있으면 회전된다. 일부 실시예들은 위의 섹션 II에서 설명되는 바와 같이 회전 그룹을 정의한다.
프로세스는 그 다음 (단계 8145에서) ROI를 관심 위치 위의 제1 특정 수의 라인들 및 관심 위치 아래의 제2 특정 수의 라인들을 포함하는 똑바른 경계 박스로 정의한다. 이 정의는 사용자가 관심 위치에 관심이 있고 이 관심 위치의 위 아래의 특정 수의 텍스트 라인들을 보기 원한다는 가정에 기초한다.
ROI가 정의됨에 따라, 프로세스(8100)는 그 다음 (단계 8150에서) ROI의 폭 및 높이가 보기 영역의 폭 및 높이보다 크지 않도록 줌한다.
다음으로, 프로세스(8100)는 (단계 8160에서) (위의 단계들에서 정의된) ROI가 수평으로 디스플레이 영역에 맞는지 여부를 판단한다. ROI가 수평으로 맞는 경우, 프로세스는 (단계 8165에서) ROI를 수평선 상에서 중심에 놓는다. 그렇지 않으면, 프로세스는 (단계 8170에서) 수평선 상에서 관심 위치를 중심에 놓는다. 프로세스는 그 다음 (단계 8175에서) ROI가 디스플레이 영역 내에 수직으로 맞는지 여부를 판단한다. ROI가 수직으로 맞는 경우, 프로세스는 (단계 8180에서) ROI를 수직선 상에서 중심에 놓는다. 그렇지 않으면 (단계 8185에서) 관심 위치를 수직선 상에서 중심에 놓는다.
관심 위치 및/또는 영역을 중심에 위치시킨 후에, 프로세스는 (단계 8187에서) 관심 위치를 포함하는 페이지의 맨 아래 또는 맨 위 가장자리가 디스플레이 영역 내에 있는지 여부를 판단한다. 그러하면, 프로세스는 (단계 8190에서) 보이는 페이지 가장자리를 디스플레이 영역의 대응하는(즉, 맨 위 또는 맨 아래) 가장자리로 이동시켜 하나의 페이지만이 디스플레이되고 전체 페이지 영역이 수직으로 채워지도록 한다. 프로세스는 그 다음 (단계 8192에서) 관심 위치를 포함하는 페이지의 오른쪽 또는 왼쪽 가장자리가 디스플레이 영역 내에 있는지 여부를 판단한다. 만약 그러하면, 프로세스는 (단계 8195에서) 보이는 페이지 가장자리를 디스플레이 영역의 대응하는(즉, 오른쪽 또는 왼쪽) 가장자리로 이동시켜 하나의 페이지만이 디스플레이되고 전체 디스플레이 영역이 수직으로 채워지도록 한다. 마지막으로, 프로세스는 (단계 8197에서) 적용되는 위의 변형 모두로 디스플레이 영역을 다시 드리우고, 종료된다.
B. 의미적으로 재구조화된 문서들의 디스플레이 및 네비게이션
일부 실시예들은 의미적으로 재구조화된 문서들의 디스플레이 및 네비게이션를 최적화하기 위한 다양한 방법들을 제공한다. 일부 실시예들에서, 디스플레이 및 네비게이션는 작은 스크린 장치들(예컨대, 매체 재생기, 셀 폰 등)에 대해 최적화된다.
도 82는 의미적으로 재구조화된 문서를 디스플레이하기 위한 일부 실시예들의 프로세스(8200)를 의미적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 8205에서) 의미적으로 재구조화된 문서를 수신한다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션 II-VI에서 설명되는 문서 재구조화의 결과인 문서 객체 모델을 포함한다. 일부 실시예들에서 문서 객체 모델은 이것이 문서 재구조화 프로세스를 통해 콘텐츠 정보로 채워지기 전에 위의 섹션 II에서 설명되는 구역 그래프를 포함한다.
프로세스는 그 다음 (단계 8205에서) 의미적으로 재구조화된 문서를 섹션들로 나눈다. 일부 실시예들에서, 분할은 문서에 대한 문서 객체 모델 내의 정보에 기초한다. 일부 실시예들에서, 각 섹션은 워드들, 연관된 그래픽 객체들, 및 기타 둘러싸인 섹션들의 네스팅된(nested) 시퀀스이다. 예를 들어, 네스팅은 박스로 된 예 또는 노드, 또는 테이블의 셀들로 나타날 수 있다.
프로세스(8215)는 다음으로 재구조화된 문서 보기를 조정하여 섹션들을 통하는 자연 흐름을 수용한다. 프로세스는 그 다음 종료된다. 조정은 일부 실시예들에서 여러 방식으로 나타낼 수 있다. 도 83은 일부 실시예들의 하나의 이러한 조정을 도시한다. 도 83은 두 칼럼(8310 및 8315) 내의 의미적으로 재구조화된 문서의 일부를 초기에 디스플레이하고 있는 장치(8305)를 도시한다. 일부 예들에서, 문서는 초기에 두 칼럼을 갖는 반면, 다른 경우에서 문서는 이미 장치(8305) 상에서 보이기 위해 이미 조정되었다.
도 83은 장치(8305)가 한쪽으로 회전된 것을 도시한다. 장치는 가속도계 또는 다른 이러한 장치를 포함하여 이것이 한쪽으로 회전되었다는 것을 인식한다. 따라서, 보기는 텍스트가 수평으로 보이도록 90도 회전한다. 그러나, 동일한 두 칼럼(8310 및 8315)이 디스플레이되지 않는다. 대신, 이 칼럼들로부터의 텍스트는 3개의 칼럼(8320 내지 8330)로 나뉘어져 모든 텍스트가 동일한 크기로 디스플레이되고, 가독성이 유지된다. 이는 문서 객체 모델이 의미적 재구조화 프로세스에 의해 함께 놓이는 경우, 텍스트의 읽기 순서가 제1 칼럼 내의 맨 위에서 맨 아래로 흐르고, 그 다음 제1 칼럼의 맨 위로 돌아가는 것을 나타내기 때문에 가능하다.
도 84는 의미적으로 재구조화된 문서 내의 영역들 간에서 네비게이팅하기 위한 일부 실시예들의 프로세스(8400)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스(8400)는 (단계 8405에서) 의미적으로 재구조화된 문서의 영역을 디스플레이한다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션 II-VI에서 설명된 문서 재구조화의 결과인 문서 객체 모델을 포함한다. 일부 실시예들에서 문서 객체 모델은, 이것이 문서 재구조화 프로세스를 통해 콘텐츠 정보로 채워진 후 위의 섹션 II에서 설명된 구역 그래프를 포함한다. 의미적으로 재구조화된 문서의 영역들이 일부 실시예들에서 문서 객체 모델에 의해 정의되고 텍스트 영역들, 그래픽들 등을 포함할 수 있다.
프로세스(8400)는 (단계 8410에서) 디스플레이된 영역의 끝을 지나는 입력 스크롤링을 수신한다. 이 끝은 일부 실시예들에서 영역의 맨 아래(스크롤 다운) 또는 맨 위(스크롤 업)가 될 수 있다. 예를 들어, 텍스트의 칼럼의 일부가 디스플레이되는 경우, 프로세스는 칼럼의 맨 위로 가는 스크롤 업 입력을 수신하거나 칼럼의 마지막으로 가는 스크롤 다운을 수신한다.
프로세스는 그 다음 (단계 8415에서) 자동적으로 문서의 흐름 내의 다음 영역을 문서의 의미적으로 재구조화된 계층적 모델(즉, 문서 객체 모델)을 이용하여 디스플레이로 이동시킨다. 위에서 설명된 바와 같이, 문서 객체 모델을 이용하여, 프로세스는 문서 내의 텍스트를 통하는 흐름 및 연관된 그래픽을 인식할 수 있다. 칼럼 예를 계속하여, 사용자가 칼럼의 마지막을 통과하는 스크롤 다운하는 경우, 일부 실시예들은 다음 칼럼의 맨 위로 넘어간다. 일부 실시예들은 대신에 제2 칼럼의 맨위로부터의 텍스트를 제1 칼럼의 맨 아래로 덧붙이고 텍스트가 모두 하나의 칼럼인 것처럼 계속하여 스크롤링한다.
도 85는 작은 스크린 장치에 대해 의미적으로 재구조화된 문서의 레이아웃을 수정하기 위한 일부 실시예들의 프로세스(8500)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스는 (단계 8505에서) 특정 레이아웃을 갖는 의미적으로 재구조화된 문서를 수신한다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션 II-VI에서 설명된 문서 재구조화의 결과인 문서 객체 모델을 포함한다. 일부 실시예들에서 문서 객체 모델은 문서 재구조화 프로세스를 통해 콘텐츠 정보로 채워진 후에 위의 섹션 II에서 설명된 구역 그래프를 포함한다.
도 86은 큰 스크린 상에 디스플레이되거나 의미적 재구조화 없이 각각 여러 텍스트 라인을 포함하는 특정 두 칼럼 레이아웃으로 디스플레이되는 문서의 페이지(8600)를 도시한다. 페이지(8600) 상의 제1 칼럼은 6개의 전체 텍스트 라인 및 7번째의 일부에 걸치는 워드들(8605)의 세트를 포함한다.
프로세스(8500)는 (단계 8510에서) 작은 스크린 장치 상에서 보기를 위해 레이아웃을 수정하는 한편 문서의 계층적 모델(즉, 문서 객체 모델)을 이용하여 문서의 흐름을 유지한다. 프로세스는 (단계 8515에서) 작은 스크린 장치 상의 수정된 레이아웃의 적어도 일부를 디스플레이한다. 프로세스는 그 다음 종료된다. 도 86은 페이지(8600)의 제1 칼럼으로부터의 텍스트(8605)를 디스플레이하는 작은 스크린 장치(8610)를 도시한다. 그러나, 텍스트는 작은 스크린 장치 상에서 이상적 보기를 위해 조정되었다. 사용자가 가늘게 눈을 뜨고 봐야할 정도로 텍스트를 매우 작게 디스플레이하기 보다는, 텍스트 크기가 증가되고 라인당 워드의 수가 감소된다. 스크롤 다운이 사용자가 일부 실시예들에서 텍스트를 순서대로 계속하여 읽을 수 있도록 한다.
일부 실시예들에서, 문서에 대한 문서 객체 모델은 어떻게 알맞게 다양한 상황에 대한 레이아웃들, 디스플레이 영역 크기들, 및 디스플레이 영역 측면 비율들을 디스플레이하는지에 관한 제안을 포함한다. 이 제안들은 재구조화의 결과들에 기초하여 문서 재구조화 프로세스 동안 생성될 수 있거나, 사용자 선호들로 설정될 수 있거나 일부 실시예들에서 문서의 초기 저자로 설정될 수 있다. 일부 실시예들은 재구조화된 문서 정보(예컨대, 문서 객체 모델)를 문서와 함께 저장하고, 이러한 사용자 선호들을 재구조화된 문서와 함께 저장할 수 있다. 일부 실시예들은 문서 정보를 XML 형태로 저장하거나, PDF(또는 유사한 포맷의) 문서의 메타데이터로 저장한다.
IX . 레이아웃들에 걸친 텍스트의 선택
디스플레이 및 문서들을 통한 네비게이팅에 더하여, 텍스트를 선택하는 능력은 사용자에게 매우 중요할 수 있다. 복수의 레이아웃들로 나누어지는 복수의 상이한 텍스트 흐름들(예컨대, 복수의 기사들)을 갖는 복잡한 페이지들은 지능적으로 순서대로 텍스트를 선택 시도하는 애플리케이션에 대해 어려움을 일으킬 수 있다. 텍스트를 (예컨대, 복사 및 붙이기를 위해) 선택하는 경우, 문자들, 워드들, 텍스트 라인들 등의 순서가 유지되는 것이 중요하다. 이는 칼럼 내의 선택들을 포함할 뿐만 아니라 복수의 칼럼, 레이아웃, 구역, 또는 페이지에 걸치는 선택들을 포함한다.
일부 실시예들은 의미적으로 재구조화된 문서 내의 텍스트를 선택하기 위한 방법들을 제공한다. 일부 실시예들에서, 의미적으로 재구조화된 문서는 위의 섹션 II-VI에서 설명된 문서 재구조화의 결과인 문서 객체 모델을 포함한다. 일부 실시예들에서 문서 객체 모델은 문서 재구조화 프로세스를 통해 콘텐츠 정보로 채워진 후, 위의 섹션 II에서 설명된 구역 그래프를 포함한다. 일부 실시예들의 문서 객체 모델은 레이아웃 및 흐름 정보, 이를테면 레이아웃 내의 칼럼들의 읽기 순서, 및 하나의 레이아웃으로부터 다른 레이아웃으로의 흐름을 포함한다.
도 87은 의미적으로 재구조화된 문서 내의 텍스트의 선택을 결정하기 위한 일부 실시예들의 프로세스(8700)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스(8700)는 (단계 8705에서) 문서에 대한 구역 및 레이아웃 정보를 수신한다. 일부 실시예들에서, 구역 정보는 위의 섹션 II에서 설명된 문서의 콘텐츠로 채워진 구역 그래프를 포함한다. 일부 실시예들에서, 레이아웃 정보는 위의 섹션 IV에서 설명된 칼럼 및 레이아웃들을 포함할 뿐만 아니라 레이아웃들을 통과 및 레이아웃들 사이의 읽기의 흐름을 포함한다.
프로세스는 그 다음 (단계 8710에서) 문서의 일부를 디스플레이한다. 일부 실시예들에서, 문서는 표준 스크린 상의 자신의 원래 보기 치수들로 디스플레이된다. 그렇지만, 일부 실시예들은 위의 섹션 VIII에서 설명된 프로세스들 중 하나를 이용하여 (예컨대, 문서를 작은 스크린 장치 상에 디스플레이 하는 경우) 조정된 방식으로 문서를 디스플레이한다.
프로세스(8700)는 (단계 8715에서) 선택의 시작 지점을 수신한다. 프로세스는 또한 (단계 8720에서) 선택의 종료 지점을 수신한다. 일부 실시예들은 커서 제어 장치(예컨대, 마우스), 키보드, 또는 이들의 조합을 통해 시작 및 종료 지점들을 수신한다. 예를 들어, 선택은 마우스로 텍스트 내의 시작 지점을 클릭하고, 마우스 버튼을 누르고, 텍스트 내의 종료 지점으로 드래그하며, 마우스 버튼을 릴리스하는 사용자에 의해 정의될 수 있다. 유사한 프로세스들이 다른 커서 제어 장치들로 수행될 수 있다. 일부 실시예들은 커서 제어 장치들로 또한 다른 선택의 정렬을 가능하게 한다 - 예컨대, 더블 클릭하여 워드 선택, 또는 트리플 클릭하여 텍스트의 라인을 선택. 사용자는 또한, 일부 실시예들에서, 키보드 상의 선택 키들(예컨대, 시프트 및 화살표 키들)을 이용하여 의미적으로 재구조화된 문서 내의 텍스트를 선택한다.
드래그 선택의 경우, 일부 실시예들은 시작 지점을 마우스가 처음 클릭하는 지점으로 정의하고 종료 지점을 마우스 버튼이 눌러지는 경우 커서의 현재 지점 또는 마우스 버튼이 릴리스 되었을 때 마우스 버턴의 릴리스 포인트로 정의한다. 더블 및 트리플 클릭, 또는 구조적 요소(예컨대, 단락, 칼럼 등)를 선택하는 기타 선택 메커니즘에 대하여, 일부 실시예들은 시작 지점을 왼쪽 맨 아래로 정의하고 종료 지점을 구조적 요소의 경계 박스의 맨위 오른쪽으로 정의한다. 일부 실시예들에서, 구조적 요소의 경계 박스는 글자 경계들의 집합의 경계 박스이다. 일부 실시예들에서, 문자에 대한 글자 경계들은 왼쪽의 자신의 앵커 포인트로부터 오른쪽의 (가능하게는 다음의 문자로 돌출시켜 조정되는) 폭만큼 더한 앵커 포인트로 확장하고 앵커 위의 상승(ascent)으로부터 앵커 아래의 하강(descent)으로 확장한다.
프로세스는 그 다음 (단계 8725에서) 문서의 시작 지점, 종료 지점, 및 레이아웃 및 흐름 속성들을 이용하여 텍스트의 선택된 섹션을 결정한다. 프로세스는 그 다음 종료된다. 다양한 실시예들은 문서의 시작 및 종료 지점을 고려했을 때 정확히 어느 텍스트가 의미적을 재구조화된 문서 내의 어느 레이아웃들로부터 선택되는지 여부를 판단하기 위한 상이한 자세한 프로세스들을 제공하는데, 이들 중 일부는 아래에서 설명된다.
도 88은 의미적으로 재구조화된 문서의 페이지(8801) 상의 텍스트의 선택의 시퀀스(8800)를 도시한다. 페이지(8801)는 페이지의 중심부에 (상이한 레이아웃인) 두 메인 칼럼들(8805 및 8810) 및 작은 콜-아웃(8815)을 포함한다. 시퀀스(8800)는 또한 선택을 위한 시작 지점(8820) 종료 지점(8825)를 보여준다. 이 시작 지점 및 종료 지점으로부터 오는 텍스트의 선택(8830)은 제1 칼럼의 시작으로부터 바닥으로 이동하고, 그 다음 제2 칼럼의 맨 위로부터 종료 지점으로 간다. 중심 콜-아웃(8815) 내의 텍스트는 설명된 실시예에서 선택되지 않는다. 당업자라면 선택 프로세스들의 변형이 중심 콜-아웃(8815)이 선택(8830)에 포함되도록 가능하다는 것을 알 수 있다.
도 89는 의미적으로 재구조화된 문서 내의 텍스트의 선택을 정의하기 위한 일부 실시예들의 자세한 프로세스(8900)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스(8900)는 (단계 8905에서) 문서에 대한 구역 및 레이아웃 정보를 수신한다. 일부 실시예들에서, 구역 정보는 위의 섹션 II에서 설명된 문서의 콘텐츠로 채워지는 구역 그래프를 포함한다. 일부 실시예들에서, 레이아웃 정보는 위의 섹션 IV에서 설명된 바와 같이 칼럼들 및 레이아웃들을 포함할 뿐만 아니라, 레이아웃들을 통하고 레이아웃들 간의 읽기의 흐름을 포함한다.
다음으로, 프로세스는 (단계 8910에서) 읽기 순서를 문서 내의 각 칼럼에 지정한다. 일부 실시예들은 각 페이지 상의 0의 읽기 순서에서 시작한다(즉, 읽혀질 처음 칼럼은 읽기 순서 0이 지정된다). 일부 실시예들은 특정 레이아웃 내에서 각 칼럼에 지정되는 읽기 순서가 레이아웃 내의 칼럼들의 순서와 일치해야 하고 특정 레이아웃 밖의 어떠한 칼럼도 특정 레이아웃의 시작 및 종료 칼럼들의 순서 사이의 읽기 순서를 가질 수 없는 요건을 부가한다. 어느 레이아웃이 읽기 순서에 우선 오는지에 관하여, 이 결정은 일부 실시예들에서 임의적이다. 다른 실시예들은 페이지의 설계에 기초하여 레이아웃에서 레이아웃으로의 읽기 순서를 구별한다.
프로세스는 그 다음 (단계 8915에서) 문서의 일부를 디스플레이한다. 일부 실시예들에서, 문서는 표준 스크린 상의 원래 보기 치수로 디스플레이된다. 그렇지만, 일부 실시예들은 (예컨대, 문서를 작은 스크린 장치 상에 디스플레이 하는 경우) 위의 섹션 VIII에서 설명된 프로세스들 중 하나를 이용하여 조정된 방식으로 문서를 디스플레이 한다.
프로세스는 그 다음 (단계 8920에서) 텍스트 선택에 대한 시작 및 종료 지점들을 수신한다. 일부 실시예들은 커서 제어 장치(예컨대, 마우스), 키보드, 또는 이들의 조합을 통해 시작 및 종료 지점들을 수신한다. 예를 들어, 선택은 마우스로 텍스트 내의 시작 지점을 클릭하고, 마우스 버튼을 누른 채로 있고, 텍스트 내의 종료 지점으로 드래그 하고, 마우스 버튼을 릴리스하는 사용자에 의해 정의될 수 있다. 유사한 프로세스들이 다른 커서 제어 장치들로 수행될 수 있다. 일부 실시예들은 커서 제어 장치들로 또한 다른 선택의 정렬을 가능하게 한다 - 예컨대, 더블 클릭하여 워드 선택, 또는 트리플 클릭하여 텍스트의 라인을 선택. 사용자는 또한, 일부 실시예들에서, 키보드 상의 선택 키들(예컨대, 시프트 및 화살표 키들)을 이용하여 의미적으로 재구조화된 문서 내의 텍스트를 선택한다.
다음으로, 프로세스는 (단계 8925에서) 시작 및 종료 지점들이 동일한 레이아웃 내에 있는지 여부를 판단한다. 시작 및 종료 지점들이 동일한 레이아웃 내에 있지 않으면, 프로세스는 (단계 8930에서) 동일한 레이아웃 내의 새로운 종료 지점을 시작 지점으로 결정한다. 일부 실시예들은 사용자가 아마도 우연히 선택 장치를 제2 레이아웃으로 흘려보냈다는 가정하에, 그리고 선택들이 걸치는 레이아웃들에 비해 단일 레이아웃 내에서 보다 안정적으로 결정될 수 있기 때문에 종료 지점을 시작 지점과 동일한 레이아웃으로 이동시킨다. 일부 실시예들은 시작으로부터 종료 지점으로의 라인을 정의하고, 라인이 시작 지점의 레이아웃을 떠나는 위치가 새로운 종료 포인트로 정의된다. 다른 실시예들은 종료 지점을 수평 또는 수직으로 시작 지점의 레이아웃으로 이동시킨다.
프로세스는 그 다음 (단계 8935에서) 시작 지점이 읽기 순서에 있어 종료 지점 전에 있는지 여부를 판단한다. 일부 실시예들에서, 시작 및 종료 지점이 동일한 칼럼에 있는 경우, 읽기 순서는 두 지점들 중 더 높은 것(동일한 경우, 가장 왼쪽의 것)이 읽기 순서에서 더 빠른 지점이 되도록 결정된다. 시작 지점이 읽기 순서에서 종료 지점 이후에 있는 경우, 프로세스는 (단계 8940에서) 선택의 시작 및 종료 지점을 스위치하여, 시작 지점이 항상 종료 지점보다 읽기 순서에 있어 앞서도록 한다.
다음으로, 프로세스(8900)는 (단계 8945에서) 시작 및 종료 지점들이 동일한 칼럼 내에 있는지 여부를 판단한다. 두 지점들이 동일한 칼럼에 있는 경우, 프로세스는 (단계 8950에서) 시작 지점으로부터 종료 지점으로의 칼럼 내의 텍스트를 선택한다. 프로세스는 그 다음 종료된다. 그렇지 않고, 두 지점들이 동일한 칼럼 내에 있지 않으면, 프로세스는 (단계 8955에서) 시작 지점으로부터 시작 지점을 포함하는 칼럼의 바닥까지, 종료 지점을 포함하는 칼럼의 맨 위로부터 종료 지점까지, 및 모든 사이의 칼럼들의 텍스트를 선택한다. 프로세스는 그 다음 종료된다. 일부 실시예들에서, 첫번째 선택된 문자는 시작 지점에 있거나 시작 지점의 오른쪽에 있는 문자이고, 마지막 선택된 문자는 종료 지점에 있거나 종료 지점의 왼쪽에 있는 문자이다. 일부 실시예들에서, 만약 종료 지점이 두 라인들 사이에 있으면, 위의 모든 라인이 선택되고 아래의 라인은 선택되지 않는다. 텍스트가 일단 선택되면, 프로세스는 종료된다.
도 90은 의미적으로 재구조화된 문서의 페이지(9000)를 도시한다. 페이지(9000)는 두 메인 칼럼(9005 및 9010) 및 중앙의 텍스트 박스(9015)를 포함한다. 도시된 바와 같이, 이들에는 읽기 순서가 각각 지정된다(칼럼(9005)은 읽기 순서 1을 갖고, 칼럼(9010)은 읽기 순서 2를 가고, 텍스트 박스(9015)는 읽기 순서 3을 갖는다). 도 90은 또한 선택의 시작 지점(9020) 및 종료 지점(9025)를 도시할 뿐만 아니라, 시작 및 종료 지점에 의해 정의된 라인(9030)을 도시한다. 도 91은 프로세스(8900)에 따라 시작 및 종료 지점(9020 및 9025)에 의해 정의된 선택(9100)을 도시한다. 라인(9030)이 텍스트 박스(9015)의 일부를 포함하지만, 이는 상이한 레이아웃이기 때문에 텍스트가 프로세스(8900)에 따라 선택되지 않는다. 대신, 선택(9100)은 시작 지점으로부터 종료 지점까지 해당되어, 시작 지점 아래의 칼럼(9005) 내의 모든 라인 및 시작 지점 위의 칼럼(9015)의 모든 라인을 선택한다.
도 92는 또한 페이지(9000) 뿐만 아니라 상이한 선택의 시작 지점(9220) 및 종료 지점(9225) 및 시작 및 종료 지점에 의해 정의된 라인(9230)을 도시한다. 도 93은 프로세스(8900)의 일부 실시예들에 따라 시작 및 종료 지점(9220 및 9225)에 의해 정의되는 선택(9300)을 도시한다. 종료 지점(9225)이 시작 지점(9220)과 동일한 레이아웃 내에 있지 않기 때문에, 종료 지점이 시작 지점(9220)과 동일한 레이아웃 내의 지점으로 이동한다. 도 93에 도시된 실시예는 시작 및 종료 지점 간의 라인을 그리고 종료 지점을 라인이 시작 지점의 레이아웃을 떠나는 위치로 이동시킨다. 선택(9300)은 지점(9305)으로 이동되는 종료 지점(9225)의 결과이다.
도 94는 의미적으로 재구조화된 문서 내의 텍스트의 선택을 정의하기 위한 일부 실시예들의 또 다른 자세한 프로세스(9400)를 도시한다. 일부 실시예들은 프로세스(8900) 또는 프로세스(9400)를 수행한다. 다른 실시예들은 사용자가 (선택을 하나의 레이아웃에만 한정하는) 프로세스(8900) 또는 (복수의 레이아웃에 걸치는 선택을 가능하게 하는) 프로세스(9400)를 이용하여 텍스트 선택이 이루어지는지 여부를 (예컨대, 메뉴 옵션을 통해) 선택할 수 있게 한다.
도시된 바와 같이, 프로세스(9400)는 (단계 9405에서) 문서에 대한 구역 및 레이아웃 정보를 수신한다. 일부 실시예들에서, 구역 정보는 위의 섹션 II에서 설명되는 문서의 콘텐츠로 채워지는 구역 그래프를 포함한다. 레이아웃 정보는 일부 실시예들에서 위의 섹션 IV에서 설명된 칼럼 및 레이아웃들 뿐만 아니라 레이아웃들을 통하는 및 레이아웃들 간의 읽기 흐름을 포함한다.
다음으로, 프로세스는 (단계 9410에서) 읽기 순서를 문서 내의 각 칼럼에 지정한다. 일부 실시예들은 각 페이지 상의 0에서 시작한다. 일부 실시예들은 특정 레이아웃 내에서, 각 칼럼에 지정되는 읽기 순서가 레이아웃 내의 칼럼들의 순서와 일치해야 하고, 특정 레이아웃 밖의 어떠한 칼럼도 특정 레이아웃의 시작 및 종료 칼럼들의 읽기 순서 간의 읽기 순서를 가질 수 없다는 요건을 부가한다. 어느 레이아웃이 우선 읽기 순서에서 먼저 나오는지에 관하여, 이 결정은 일부 실시예들에서 임의적이다. 다른 실시예들은 페이지의 설계에 기초하여 읽기 순서를 레이아웃에 따라 구별 시도한다.
프로세스(9400)는 (단계 9415에서) 문서의 일부를 디스플레이한다. 일부 실시예들에서, 문서는 표준 스크린 상의 원래 보기 치수로 디스플레이된다. 그렇지만, 일부 실시예들은 위의 섹션 VIII에서 설명된 프로세스들 중 하나를 이용하여 (예컨대, 작은 스크린 장치 상에 문서를 디스플레이하는 경우) 조정된 방법으로 문서를 디스플레이한다.
프로세스는 그 다음 (단계 9420에서) 텍스트 선택에 대한 시작 및 종료 지점을 수신한다. 일부 실시예들은 커서 제어 장치(예컨대, 마우스), 키보드 또는 이들의 조합을 수신한다. 예를 들어, 선택은 마우스로 텍스트 내의 시작 지점을 클릭하고, 마우스 버튼을 누른 채로 있고, 텍스트 내의 종료 지점으로 드래그 하고, 마우스 버튼을 릴리스하는 사용자에 의해 정의될 수 있다. 유사한 프로세스들이 다른 커서 제어 장치들로 수행될 수 있다. 일부 실시예들은 커서 제어 장치들로 또한 다른 선택의 정렬을 가능하게 한다 - 예컨대, 더블 클릭하여 워드 선택, 또는 트리플 클릭하여 텍스트의 라인을 선택. 사용자는 또한, 일부 실시예들에서, 키보드 상의 선택 키들(예컨대, 시프트 및 화살표 키들)을 이용하여 의미적으로 재구조화된 문서 내의 텍스트를 선택한다.
프로세스(9400)는 그 다음 (단계 9425에서) 시작 및 종료 지점 간의 라인을 정의한다. 만약 시작 또는 종료 지점(또는 둘)이 칼럼 내에 있지 않으면(즉, 빈 공간, 그래픽 등 내에 있으면), 프로세스는 라인이 통과하는 마지막 칼럼의 가장자리에서의 새로운 시작 지점 또는 종료 지점(또는 둘)을 정의한다(단계 9430에서). 일부 실시예들은 라인이 가장자리를 통과하는 곳의 칼럼의 가장자리에서 이 지점을 정의한다. 다른 실시예들은 시작 또는 종료 지점을 수평으로 칼럼으로 이동시켜 새로운 시작 또는 종료 지점을 정의한다.
프로세스는 그 다음 (단계 9435에서) 시작 지점이 읽기 순서에 있어 종료 지점보다 앞서는지 여부를 판단한다. 일부 실시예들에서, 시작 및 종료 지점이 동일한 칼럼 내에 있는 경우, 읽기 순서는 두 지점들 중 높은 것(동일한 경우, 가장 왼쪽의 것)이 읽기 순서에 있어 앞선 지점에 있도록 결정된다. 시작 지점이 종료 지점 앞에 있는 경우, 프로세스는 아래에서 설명되는 단계(9445)로 진행한다. 시작 지점이 읽기 순서에 있어 종료 지점 후에 있는 경우, 프로세스는 (단계 9440에서) 선택의 시작 및 종료 지점을 스위칭하여, 시작 지점이 항상 종료 지점보다 읽기 순서에 있어 앞서도록 한다.
다음으로, 프로세스는 (단계 9445에서) 시작 지점으로부터 시작 지점을 포함하는 칼럼의 마지막까지 뿐만 아니라 읽기 순서 내의 시작 및 마지막 칼럼 간의 모든 칼럼들의 텍스트를 선택한다. 프로세스는 그 다음 종료된다. 일부 실시예들에서, 첫번째 선택된 문자는 시작 지점에서의 또는 시작 지점의 오른쪽의 문자이고, 마지막 선택된 문자는 종료 지점에서의 또는 종료 지점의 왼쪽의 문자이다. 일부 실시예에서, 종료 지점이 두 라인들 사이에 있는 경우, 위의 모든 라인이 선택되지만 아래의 라인은 선택되지 않는다.
도 95는 프로세스(9400)에 따른 (도 90의 페이지(9000) 상의) 시작 및 종료 지점들(9020 및 9025)에 의해 정의된 선택(9500)을 도시한다. (도 90에 도시된) 시작 지점(9020) 및 종료 지점(9025)이 동일한 레이아웃 내에 있기 때문에, 중앙에 있는 텍스트 박스(9015)는 이것이 읽기 순서에 있어 종료 지점의 칼럼 이후에 있기 때문에 선택되지 않는다. 라인(9015)을 따라 드래그하는 사용자는 박스(9015)를 통과하고, 이 지점에서 모든 칼럼(9010) 및 텍스트 박스(9015)의 일부가 선택된다(도 96을 통한 아래 참조). 그러나, 커서가 박스(9015)를 떠남에 따라, 칼럼(9010)의 일부만이 커서의 위치(종료 지점)까지 선택된다.
유사하게, 도 96은 프로세스(9400)에 따라 (도 92의 페이지(9000) 상의) 시작 및 종료 지점들(9220 및 9225)에 의해 정의되는 선택(9600)을 도시한다. 종료 지점(9225)이 시작 지점(9220)과 다른 레이아웃 내에 있기 때문에, 칼럼(9005)의 대부분 및 칼럼(9010)의 모두를 포함하는 시작 지점의 전체 레이아웃이 선택된다. 또한 박스(9015) 내의 텍스트가 종료 지점(9225)까지 선택된다.
도 91 및 93 대비 도 95 및 96은 프로세스(8900) 또는 프로세스(9400)를 이용하여 이용가능한 상이한 선택 옵션들을 선택한다. 당업자라면 문서의 레이아웃 및 흐름을 이용하여 다른 가능한 유익한 결과들을 가져오는 다른 선택 프로세스들이 가능함을 알 수 있다.
X. 효율적인 클러스터 분석
위의 다양한 선택들에 설명된 바와 같이, 본 발명의 일부 실시예들은 클러스터 분석을 활용하여 문서 재구조화를 수행한다. 예를 들어, 정렬 가이드들은 밀도 클러스터링의 사용으로 식별되고, 결합된 그래프들은 경계 클러스터링의 사용으로 식별되며, 문자들 간의 틈들이 차이 클러스터링을 이용하여 워드들 및 조각 틈들을 식별하는데 사용된다. 그러나, 클러스터 분석은 매우 메모리 집약적일 수 있어, 이는 리소스 제한 장치, 이를테면 셀 폰 또는 매체 재생기가 클러스터 분석을 수행하는데 어려울 수 있다.
따라서, 본 발명의 일부 실시예들은 효율적인 클러스터 분석을 수행하기 위한 방법들을 제공한다. 일부 실시예들에서, 효율적인 클러스터 분석은 클러스터 분석이 리소스 제한 장치(예컨대, 핸드헬드 장치) 상에서 수행될 수 있도록 한다. 리소스 제한 장치들은 이용가능한 메모리, 프로세싱 전력, 이 둘, 또는 기타 연산 리소스들의 면에서 제한될 수 있다.
일부 실시예들에서, 클러스터 분석은 정렬되지 않은 어레이의 지표들을 저장하는 정렬된 어레이들을 간접적으로 사용한다. 일부 실시예들은 각 상이한 거리 스케일에서 클러스터 분석을 반복하고 결과들을 비교하는 것에 비하여, 보다 빠르게 데이터의 최적의 분할을 찾기 위해서, 간접적으로 정렬된 어레이들을 이용하여 복수의 상이한 거리 스케일들에서의 데이터를 동시에 분할한다.
도 97은 클러스터 분석을 이용하여 문서를 의미적으로 재구조화하기 위한 일부 실시예들의 프로세스(9700)를 개념적으로 도시한다. 도시된 바와 같이, 프로세스(9700)는 (단계 9705에서) 리소스 제한된 장치 상의 문서를 수신한다. 일부 실시예들에서, 장치는 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 기타 핸드헬드 장치이다. 문서는 일부 실시예들에서 구조적 정보를 포함하지 않는 벡터 그래픽 문서이다.
프로세스는 그 다음 (단계 9710에서) 리소스 제한된 장치 상의 문서 데이터에 효율적인 클러스터 분석을 수행한다. 예를 들어, 일부 실시예들은 차이 클러스터링을 수행하여 워드들 및 조각 틈들을 식별하고, 밀도 클러스터링을 수행하여 정렬 가이드들을 식별하며, 경계 클러스터링을 수행하여 합성 그래픽을 식별한다.
마지막으로, 프로세스는 (단계 9715에서) 클러스터 분석의 결과들에 기초하여 리소스 제한 장치 상의 문서를 의미적으로 재구조화한다. 프로세스는 그 다음 종료된다. 도 98은 문서(9805)가 리소스 제한 장치(9810) 상에서 의미적으로 재구조화되는 일부 실시예들의 시퀀스(9800)를 도시한다. 문서(9805)는 처음에 (단계 9801에서) 좌표를 갖는 문자들의 세트(9815)로 파싱된다. 예를 들어, 문자(9820)("r")는 좌표 {X2, Y2}를 갖는다. 일부 실시예들은 또한 그래픽 객체들(예컨대, 이미지들, 모양들 등)을 파싱한다.
다음으로, 효율적인 클러스터 분석이 (단계 9802에서) 문서 데이터에 적용된다. 일부 실시예들에서, 이는 차이 클러스터링을 이용하여 워드들을 식별하고, 밀도 클러스터링을 이용하여 가이드들을 식별하며, 경계 클러스터링을 이용하여 결합할 그래프들을 식별하는 것을 포함한다. 다른 재구조화 프로세스들이 또한 (단계 9803에서) 수행된다. 예를 들어, 단락 및 칼럼이 일부 실시예들에서 식별된다. 당업자라면 일부 실시예들에서 클러스터 분석 프로세스 및 다른 재구조화 프로세스는 이들이 수행되는 순서에 있어 반드시 분리될 필요가 없음을 알 수 있다. 효율적인 클러스터 분석 및 다른 재구조화 프로세스들의 결과는 디스플레이, 네비게이팅 등이 될 수 있는 의미적으로 재구조화된 문서(9825)이다.
A. 연산자 세트로서의 클러스터 분석
일부 실시예들은 실수들 (r1, r2, … , rN)의 시퀀스들에 적용되는 여러 연산자들에 기초하여 (차이 클러스터링, 밀도 클러스터링 또는 경계 클러스터링인) 클러스터 분석을 수행한다. 일부 실시예들은 다음의 연산자들을 포함한다:
·차이 연산자 D((r1, r2, … , rN) = (r2-r1, r3-r2, … , rN-rN -1). 차이 연산자 D는 일부 실시예들에서, 쌍으로된 요소들의 그룹을 정의한다(즉, 쌍들 {r2, r1}, {r3, r2} 등에 대한 값들을 정의한다).
·정렬 연산자 S((r1, r2, …, rN)) = (s1, s2, …, sN), (s1, s2, …, sN)는 s1≤s2≤…≤sN이 되는 (r1, r2, …, rN)의 순열.
·분할 연산자 P(g, (r1, r2, …, rN)) = ((r1, …, rK1), (rK +1, …, rK2), …, (rKp+1, …, rKM), (rKM +1, …, rN)이고, J가 세트 {K1, …., KM} 내에 있는 경우에만 rJ+1 -rJ ≥ g임. 일부 실시예들에서 변수 g는 틈 최소값이라고 하고, 연산자 P는 시퀀스들(r1, r2, …, rN)을 두 연속하는 값들 간의 차이가 틈 최소값을 초과하는 모든 곳의 겹치지 않은 서브시퀀스들로 분할한다.
·(연산자 P의 출력과 같은) 분할된 시퀀스 상에서 반복하여 연산하여 서브 시퀀스들의 인접하는 쌍들을 단일 서브시퀀스로 임의의 횟수 만큼 결합시키는 합치는 연산자 C. 일부 실시예들에서, 언제 인접하는 쌍들을 결합시킬지 결정하기 위한 테스트들은 도메인 독립적이다.
·분할된 시퀀스 상에서 연산하여 도메인 독립적인 테스트들에 기초하여 클러스터들의 일부를 제거하는 필터링 연산자 F. 위의 섹션 III에서 설명되는 밀도 제약값들은 F의 사용 예이다.
차이 클러스터링의 일부 실시예들은 위의 연산자들에 따라 수행된다. 유사하게, 경계 클러스터링이 일차 차이들을 대신하는 스프레드 값들을 갖는 차이 클러스터링을 이용하기 때문에, 경계 클러스터링의 일부 실시예들은 위의 연산자들에 따라 수행된다.
예를 들어, 일부 실시예들은 정렬 연산자 S를 입력 데이터로 적용하고 차이 연산자 D가 일차 차이들을 생성한다. S 및 D는 그 다음 결과 데이터로 적용되어 이차 차이들(차이들 간의 차이들)을 생성한다. 이차 차이들은 S로 정렬되고, 이차 차이들은 그 다음 두 개의 분리 서브시퀀스들(내부 레벨 차이들 및 더 큰 레벨 간 차이들)로 분리된다.
일부 실시예들에서, 분리는 D를 이차 차이들로 적용하여 3차 차이들을 얻고, 그 다음 S가 제3 차이들을 정렬시키는 것을 포함한다. 이차 차이들 내의 분리는 일반적으로 하나의 3차 차이가 실질적으로 나머지 보다 큰 곳에서 발생한다. 일부 실시예들은 도메인 특정 인자들을 또한 평가한다.
일단 분리(split)가 구축되면, 일부 실시예들은 각 분할이 클러스터링 레벨을 나타내도록 가장 작은 내부 레벨 이차 차이와 동일한 틈 최소값을 이용하여 P를 적용하여 정렬된 일차 차이들을 분할한다. 일부 실시예들은 C를 이 분할에 적용하는 반면, 일부는 그러하지 않을 수 있다. 데이터를 특정 레벨에서 클러스터들로 분할하기 위해, 일부 실시예들은 특정 레벨에서의 가장 작은 차이와 일치하는 틈 최소값을 이용하여 P를 (정렬된) 입력 데이터에 적용한다. 일부 실시예들은 이 지점에 C를 또한 적용하는데, 이는 종종 레벨 분할을 위한 것과는 다른 클러스터 분할을 합치기 위한 상이한 조건으로 이루어진다. 마지막으로, 일부 실시예들은 F를 적용하여 클러스터들 중 일부를 실격시킨다.
밀도 클러스터링의 일부 실시예들은 또한 위의 연산자들에 따라 수행된다. 예를 들어, 일부 실시예들은 S 그 다은 D를 입력 데이터에 적용하여 일차 차이들을 생성하고, S를 적용하여 차이들을 정렬시킨다. 차이들 d 각각에 대해, 일부 실시예들은 틈 최소값 d를 이용하여 연산자 P로 정렬된 입력 데이터를 분할하고, 그 다음 밀도 제약값들을 이용하여 분할들을 필터링한다. 필터링 후의 분할들 각각은 최적화 메트릭에 의해 측정되고 최적화 분할이 최종 클러스터링으로 선택된다. 일부 실시예들은 가장 큰 값으로 시작하고 정렬된 시퀀스 내의 연속적으로 더 작은 값들로 이동하는 (틈 최소값들로서) 일차 차이들을 루프 스루한다.
일부 실시예들에서, 루프는 충분한 정보가 있으면 효율성을 위해 빨리 종료될 수 있다. 구체적으로, 일부 실시예들은 각 연속적인 분할이 클러스터들 중 하나가 두 클러스터로 분할됨에 따라 이전 분할이 되는 것을 인식한다. 일부 실시예들은 또한 최소 크기 밀도 제약을 만족하지 않는 클러스터들이 추후에도 이러한 제약을 만족하지 않고, 따라서 이러한 클러스터들이 버려질 수 있다는 것을 인식한다. 일단 분할 내의 모든 클러스터들이 최소 크기 아래로 떨어지면, 루프는 일부 실시예들에서 조기에 종료된다.
B. 클러스터 분석을 위한 효율적인 데이터 구조들
일부 실시예들은 메모리 및 프로세싱 절약을 가능하게 하는 효율적인 데이터 구조들을 이용하여 효율적인 클러스터 분석을 수행한다. 예를 들어, 데이터에 대한 새로운 어레이를 발생시키지 않고 데이터를 정렬시키는 경우(예컨대, 연산자 S를 적용하여 데이터를 입력하는 경우) 일부 실시예들은 지표들의 어레이를 정렬되지 않은 데이터의 어레이로 정의하는데, 지표들은 이들이 참조하는 값들의 순으로 정렬된다. 이는 일부 실시예들에서 간접적으로 정렬되는 어레이라고 한다. 당업자라면 예들이 어레이들을 사용하는 반면, 임의의 다른 적절한 데이터 구조가 또한 사용될 수 있음을 알 수 있다.
도 99는 간접적으로 정렬된 어레이들을 이용하여 데이터 세트를 분할하기 위한 일부 실시예들의 프로세스(9900)를 개념적으로 도시한다. 프로세스(9900)가 도 100과 함께 설명된다. 도 100은 9개의 데이터 아이템들(0.00, 7.43, 17.14, 25.46, 26.60, 30.35, 34.25, 39 및 46.97)로 된 데이터 세트의 분할을 도시한다. 도 99에 도시된 바와 같이, 프로세스(9900)는 (단계 9905에서) 데이터 값들이 클러스터링되는 정렬된 어레이 A를 수신한다. 일부 실시예들에서, 데이터는 문서 내의 워드들을 식별하고 정렬 가이드들을 식별하기 위한 문자 위치 데이터이다. 도 100을 참고하면, 데이터 세트가 정렬된 어레이 A(10010)에 지표들 A[0]-A[8]로 저장된다.
다음으로, 프로세스(9900)는 (단계 9910에서) 어레이 A의 연속적인 값들의 쌍들을 비교하여 어레이 A의 일차 차이들의 어레이 D(A)를 저장한다. 일부 실시예들에서, 어레이 D(A)가 위의 서브섹션 A에서 설명된 연산자 D의 사용에 의해 생성된다. 도 100은 데이터 간의 일차 차이들을 저장하는 어레이 D(10015)를 도시한다. 예를 들어, 지표 D[3] 내의 값은 어레이 A(10010)의 지표 A[4] 내의 값으로부터 감산된 A[3] 내의 값이다.
다음으로, 프로세스는 (단계 9915에서) 정렬 함수를 어레이 D(A)에 적용하여 D(A)의 지표들의 간접적으로 정렬된 어레이 S(D(A))를 정의하고 저장한다. 일부 실시예들에서, 정렬 기능은 위의 서브섹션 A에서 설명된 연산자 S이다. 도 100은 배열 D(10015)의 값들을 정렬하는 간접적으로 정렬된 어레이 S(D)(10020)를 도시한다. 어레이(10020) 내의 제1 값("3")은 어레이 D(10015)의 지표 3을 참조하는데, 이는 일차 차이들의 가장 작은 값("1.14")이다. 어레이(10020) 내의 제2 값은 어레이 D(10015)의 지표 4를 참조하는데, 이는 두번째로 가장 작은 일차 차이이다.
프로세스는 그 다음 (단계 9920에서) 데이터를 분할하는데 사용되는 클러스터들 간의 틈들의 최소 크기를 결정한다. 일부 실시예들에서, 이는 위의 서브섹션 A에서 설명되는 연산자 P를 분할하는데 사용하기 위한 틈 최소값 g이다. 최소 틈 크기는 일부 실시예들에서 사용자에 의해 지정되거나, 다른 곳에서 해결되어야 할 문제의 본질적인 값이다. 일부 실시예들은 데이터에 기초한 차이 틈 최소값들이 사용되도록 복수의 분할들(예컨대, 밀도 클러스터링의 경우)을 이용한다.
다음으로, 프로세스(9900)는 (단계 9925에서) 데이터를 어레이 S(D(A))에 저장된 연속적인 지표들을 이용하여 클러스터들로 분할한다. 프로세스는 그 다음 (단계 9930에서) 분할을 저장한다. 프로세스는 그 다음 종료된다. 일부 실시예들은 간접적으로 정렬된 어레이 내에 저장된 지표들을 이용하여 데이터를 분할한다. 일부 실시예들에서, 틈 최소값(즉, 효과적인 틈 최소값)보다 큰 가장 작은 일차 차이에 대응하는 S(D(A))에 저장된 지표는 후에 데이터가 분리되어야 하는 데이터의 정렬된 어레이 내의 인덱스에 대응할 것이다. 효과적인 틈 최소값 후에 어레이 S(D(A))에 저장된 모든 지표들은 이들이 틈 최소값보다 큰 틈들을 나타내기 때문에, 어디서 정렬된 데이터를 나눌지를 또한 나타낼 것이다.
도 100은 효과적인 틈 최소값이 본 예에서 7.97이라고 도시하는데, 이는 어레이 D(10015) 내의 지표 7 내에 있다. 따라서, 데이터의 분할(10025)은 이것이 (지표 7, 2, 및 1 이후의) 세 지점들 내에서 분리되기 때문에 4개의 클러스터를 갖는다. 일부 실시예들은 분할을 어레이 S(D(A))의 단일 지표로 저장한다. 분할(10025)은 지표(10030)로 저장되는데, 이는 5의 값을 갖는다. 이는 효과적인 틈 최소값에 대응하는 지표가 어레이(10020)의 지표 5에 저장되고, 따라서 데이터를 분할하기 위한 지표들이 지표들 5에 저장되고, 어레이(10020)로 저장된다.
위의 프로세스(9900)는 클러스터 분석에 대한 복수의 프로세싱 및 메모리 효율성을 가능하게 한다. 우선, 실제 데이터의 십진 값들이 아닌 (정수들인) 지표들을 메모리를 차이들의 정렬된 어레이 내에 저장하는 것은 메모리 공간을 절약한다. 두번째로, 실제로 분할을 복수의 별도 어레이들에 저장하는 대신, 이는 간접적으로 정렬된 어레이의 지표를 참조하는 단일 정수 값으로 저장되는데, 이는 데이터의 큰 어레이들에 대해 평가되는 다양한 분할들이 있는 경우 상당한 메모리 절약을 가져올 수 있다. 세번째로, 데이터를 분할하는 위치의 지표들이 간접적으로 정렬된 어레이로부터 빠르게 읽혀질 수 있는데, 이는 프로세싱 시간을 실질적으로 절약한다.
이 효율성은 클러스터 분석을 수행하는 여러 방법으로 영향을 받을 수 있다. 도 101은 복수의 거리 스케일에서 동시에 클러스터 분석을 수행하기 위한 일부 실시예들의 프로세스(10100)를 개념적으로 도시한다. 일부 실시예들에서, 프로세스(10100)는 프로세스(9900)에 제공된 효율성을 이용한다. 도시된 바와 같이, 프로세스(10100)는 (단계 10105에서) 클러스터링될 데이터 값들의 차이들의 간접적으로 정렬된 어레이를 정의한다. 이는 도 100의 어레이(10020)와 같은 어레이이고, 입력 데이터 값들을 정렬시키고, 일차 차이들을 얻으며, 그 다음 이들을 정렬시켜 일부 실시예들에서 나타난다.
프로세스(10100)는 그 다음 (단계 10110에서) 여러 상이한 거리 스케일들에서 데이터 값들을 동시에 분할한다. 일부 실시예들에서, 이는 복수의 분할들이 상이한 틈 최소값들을 이용하여 데이터에 대해 생성된다는 것을 의미한다. 예를 들어, 밀도 클러스터링의 경우, 각 가능한 분할이 일부 실시예들에서 생성된다. 일부 실시예들에서, 일차 차이들이 간접적으로 정렬된 어레이로 정렬되기 때문에, 데이터에 대한 분할 위치들은 간접적으로 정렬된 어레이에서 정렬된 지표들과 같이 빠르게 읽어질 수 있다.
다음으로, 프로세스는 (단계 10115에서) 간접적으로 정렬된 어레이의 지표를 참조하는 정수값으로 저장한다. 도 100의 정수값(10030)은 분할을 단일 정수 값을 저장하는 예이다. 프로세스는 그 다음 (단계 10120에서) 광 거리 스케일(및 따라서 광 분할)을 결정한다. 예를 들어, 일부 실시예들은 위의 섹션 III에서 밀도 클러스터링에 대해 설명되는 것과 같은 최적화 측정을 사용한다. 더욱이, 일부 실시예들은 최적화 측정에 대해 분할을 테스트 하기 전에 제약값들을 이용하여 분할 내의 클러스터들의 일부를 제거한다.
마지막으로, 일단 최적화 거리 스케일이 결정되면, 프로세스는 (단계 10125에서) 최적화 거리 스케일로부터 얻어진 데이터의 분할을 문제를 해결하기 위해 클러스터들의 세트로 저장한다. 프로세스는 그 다음 종료된다. 일부 실시예들에서, 클러스터들의 세트는 이것이 최적의 세트라고 결정되면 새로운 어레이로 저장된다.
위의 설명이 분할 연산자의 반복적인 사용에 대해 얻어지는 효율성을 나타내지만, 간접적으로 정렬된 어레이들로부터의 메모리 및 프로세싱 효율성 및 분할을 단일 값으로 저장하는 것은 또한 클러스터 분석의 다른 특징들에 적용될 수 있다. 예를 들어, 연산자를 통합하는 것은 일부 실시예들에서 동일한 효율성을 이용할 수 있다.
위에서 설명된 바와 같이, 일부 실시예들의 통합 연산자 C는 가능하게 반복적으로 분할 내의 인접하는 클러스터들을 통합한다. 인접하는 클러스터들의 결합은 분할 내의 분리를 제거하는 것으로 나타날 수 있다. 각 분리들이 간접적으로 정렬된 어레이 내의 연속적인 지표들 중 하나에 대응하기 때문에, 클러스터들을 통합하는 것은 시퀀스로부터의 실격 특정 지표들로 정의될 수 있다. 이에 따라, 통합 연산자를 분할에 적용한 결과들은 자격을 만족하는 지표들(즉, 신규 분할이 분리되는 지표들)의 시퀀스가 될 수 있다. 이러한 서브시퀀스를 저장하는 것은 일부 실시예들에서 통합되는 클러스터들 내에서 데이터를 직접 이동시키는 것보다 훨씬 빠르다.
더욱이, (효과적인 차이 레벨들의 집합인) 차이들의 통합 클러스터들은 (차이 클러스터들에 비해) 데이터 클러스터들이 특정 선택된 레벨에 대해 빠르게 읽혀질 수 있는 효율성에 약영향을 주지 않는다. 차이 클러스터들을 통합시킨 후에, 차이들의 L 번째 간접적으로 정렬된 클러스터 내의 지표들 및 그 위의 지표들은 레벨 L에서 데이터 클러스터들에 대한 분리 지점들이다. 통합으로 인한 변화는 각 간접적으로 정렬된 제1 차이 클러스터가 어디서 시작하는지를 판단하는 간접적으로 정렬된 제2 차이들이 더 적게 점이다.
(제약값들에 기초하여 데이터의 클러스터들을 제거하는) 필터링 연산자가 (차이들의 클러스터들이 아닌) 데이터의 클러스터들에만 적용되기 때문에, 데이터 클러스터들은 이미 필터링 연산자가 언제 적용되는가 결정되고, 따라서 이는 위의 분할 및 연산자 통합의 수행을 통해 얻어지는 효율성에 간섭하지 않는다.
효율성들이 또한 위의 섹션 IV에서 설명되는 바와 같이 차이 클러스터링에서 수행되는 내부 레벨 및 레벨 간 제2 차이들로 이차 차이들을 분리하는데 있어 얻어질 수 있다. 일부 실시예들에서, 분리 지점을 결정하는데 사용되는 조건들은 일차 차이들의 클러스터링 및 결과로 나오는 데이터에 따라 달라질 수 있다. 따라서, 이러한 조건들의 평가는 차이들의 분할들(따라서 데이터의 분할들)을 결정하는데 있어서의 효율성으로부터 직접 이득을 얻는다.
예를 들어, 문서 재구조화에 적용되는 차이 클러스터링의 경우, 이차 차이들을 분리하는 것이 텍스트 라인 상의 워드 분리 및 조각 분리(예컨대, 칼럼, 탭 등 틈들)를 결정하는데 사용되는데, 이들은 일차 차이들에 대응하고 각각 일차 차이들보다 더 크다. 일부 실시예들에서, 목적은 일차 차이들의 제2 클러스터의 최소값이 적용가능한 폰트의 예상 공간 문자 폭보다 훨씬 작지 않도록 이차 차이들을 분리하는 것이다. 더욱이, 두번째 목적은 (각각 워드인) 데이터 클러스터들이 적용가능한 언어에서 워드들에 대해 통상적인 평균 크기를 갖도록 하는 것이다. 잠재적 분리 지점들은 일차 차이들의 결과 클러스터들 및 데이터의 클러스터들이 이러한 기대값들로부터 얼마나 상이한지 여부에 기초하여 상대적으로 낮게 평가될 수 있다. 이러한 평가들은 일부 실시예들에서 이차 차이들로 직접 적용되는 다른 측정들(예컨대, 분리의 상대적 크기, 분리 위치의 퍼센트, 및 분리에서의 퍼센트 증가)과 최적의 분리 지점을 판단하는 형식으로 결합될 수 있다. 이차 차이들 내의 상이한 분리들의 반복적인 테스트는 위에서 설명된 프로세스들에 의해 상당히 보다 효율적으로 이루어질 수 있다.
당업자라면 위에서 설명되는 클러스터 분석 및 특정 효율성 기술들이 문서 재구조화에서의 사용에 관하여 주로 설명되는 한편, 이들이 세트, 이 세트의 요소들의 쌍들에 대한 거리 기능, 및 이 세트에 비해 상대적으로 작은 거리들에 의해 분리된 요소들의 서브세트들을 식별할 필요가 있는 곳의 임의의 문제점에 적용될 수 있음을 알 수 있다. 예를 들어, 클러스터 분석이 눈 움직임, 마우스 움직임 또는 터치 스크린 상호작용을 측정하여 얻어지는 위치 데이터를 클러스터링하여 애플리케이션, 웹 페이지, 또는 비디오와의 사용자 상호작용을 분석하는데 적용될 수 있다. 또 다른 예로서, 래스터 이미지(즉, 비트맵)가 이를 인코딩하는데 사용되는 컬러 수를 줄임으로써 압축될 수 있다. 클러스터 분석이 컬러들의 감소된 세트를 선택하도록 원래의 컬러들의 세트 상에서 사용될 수 있어, 컬러들의 각 클러스터는 단일 컬러(종종 멤버들의 평균과 동일)로 교체된다. 또 다른 예는 일부 이미지 인식 기술들(예컨대, 생체측정, 광 특성 인식, 전류 확인 등) 및 래스터 이미지들의 벡터화가 공간 및 컬러 좌표 축들에 의해 정의되는 측량 공간 내의 픽셀들의 클러스터링에 기초한다. 최종 예로서, 실험적 데이터(예컨대, 과학적 또는 비즈니스 데이터) 내의 패턴들이 축들이 관심 파라미터들인 공간 내의 데이터 지점들을 플롯하여 종종 발견된다. 클러스터 분석은 이 데이터에 적용될 수 있는데, 주어진 클러스터 내의 모든 지점들이 대략 모든 관심 파라미터의 동일한 값들을 갖는다.
C. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명되는 클러스터 분석은 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 기타 핸드헬드 또는 리소스 제한 장치들(또는 컴퓨터 판독가능 매체에 저장된 것) 상에서 실행되는 소프트웨어로 구현된다. 도 102는 클러스터 분석을 수행하기 위한 일부 실시예들의 클러스터 분석 애플리케이션(10200)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션(예컨대, 문서 재구조화 애플리케이션)으로 통합되는 반면, 다른 실시예들에서 애플리케이션은 운영 체제 내에서 구현될 수 있다.
클러스터 분석 애플리케이션(10200)은 밀도 클러스터링 모듈(10205), 차이 클러스터링 모듈(10210), 및 경계 클러스터링 모듈(10215)을 포함한다. 애플리케이션은 또한 정렬 모듈(10220), 차이 모듈(10225), 분할 모듈(10230), 통합 모듈(10235), 및 필터링 모듈(10240) 뿐만 아니라 클러스터 분석 저장소(10245)를 포함한다.
도 102는 또한 문서 콘텐츠(10250)를 도시한다. 당업자라면 클러스터 분석 애플리케이션(10200)이 문서 재구조화와 연관되지 않는 클러스터 분석을 이용하는 다른 프로세스들에 대해 사용될 수 있다. 밀도 클러스터링 모듈(10205), 차이 클러스터링 모듈(10210), 및 경계 클러스터링 모듈(10215)은 모두 문서 콘텐츠(10250)로부터 정보(예컨대, 원시 요소 위치 데이터)를 수신한다. 밀도 클러스터링 모듈(10205)은 부분적으로 모듈들(10220 내지 10240)을 이용하여 위의 섹션 III에서 설명된 바와 같이 밀도 클러스터링을 수행한다. 차이 클러스터링 모듈(10210)은 부분적으로 모듈들(10220 내지 10240)을 이용하여 위의 섹션 IV에서 설명되는 바와 같이 차이 클러스터링을 수행한다. 경계 클러스터링 모듈(10215)은 부분적으로 모듈들(10220 내지 10240)을 이용하여 위의 섹션 VI에서 설명되는 바와 같이 경계 클러스터링을 수행한다. 모듈들(10205 내지 10215)의 출력이 문서 콘텐츠(10250)로 반환된다.
일부 실시예들에서, 5개의 모듈들(10220 내지 10240)이 위의 서브섹션 A에서 설명되는 5개의 연산자들과 연관되는 연산들을 수행한다. 일부 실시예들의 정렬 모듈(10220)은 모듈들(10205 내지 10215) 중 하나로부터 데이터를 수신하고 데이터를 (예컨대, 가장 낮은 값에서 가장 높은 값 순으로) 정렬한다. 일부 실시예들의 차이 모듈(10225)은 모듈들(10205 내지 10215) 중 하나로부터 데이터를 수신하고 인접하는 데이터 조각들 간의 차이들을 결정한다. 일부 실시예들의 분할 모듈(10235)은 모듈들(10205 내지 10215) 중 하나로부터 데이터를 수신하고 이 데이터를 복수의 서브세트로 분할한다. 일부 실시예들의 통합 모듈(10235)은 모듈들(10205 내지 10215) 중 하나로부터 데이터를 복수의 서브세트들로서 수신하고 다양한 조건들에 따라 인접하는 서브세트들을 결합시킨다. 일부 실시예들의 필터링 모듈(10240)은 일부 실시예들 내의 데이터의 분할된 시퀀스를 수신하고 다양한 제약값들에 기초하여 분할들을 필터링한다.
모듈들(10220 내지 10240)은 클러스터 분석 저장소(10245)에 데이터를 저장할 뿐만 아니라 데이터를 다시 모듈들(10205 내지 10215)로 전달한다. 일부 실시예들에서, 정렬 모듈(10220)은 자신의 결과들을 정렬된 지표들의 어레이(즉, 간접적으로 정렬된 어레이)로서 클러스터 분석 저장소(10245)에 저장한다. 일부 실시예들에서, 분할 모듈은 간접적으로 정렬된 어레이의 지표를 참조하는 단일 정수 값으로서 클러스터 분석 저장소(10245)에 저장한다.
XI . 문서를 파싱하고 분석하기 위한 효율적인 데이터 구조들
본 발명의 일부 실시예들은 보다 효과적인 파싱 및 문서의 분석을 가능하게 하는 새로운 방법들 및 데이터 구조들을 제공한다. 일부 실시예들은 데이터가 조작되기 때문에 데이터의 불필요한 사본을 최소화하는 애플리케이션 프로그래밍 인터페이스(application programming interface; API)를 제공한다. 일부 실시예들에서, API는 운영 체제, 라이브러리, 서비스 또는 프레임워크가 컴퓨터 프로그램들에 의해 만들어진 지원 요청들로 제공하는 기능, 절차, 방법, 클래스 또는 프로토콜의 세트이다. 일부 실시예들에서, API는 통계적으로 연결되는 반면, 다른 실시예들에서 API는 동적으로 연결된다.
통상적으로, API는 내부 데이터의 사본들을 반환하거나 어떤 방식으로든 조작되기 전에 복사되어야 하는 내부 데이터에 대한 리드-온니 액세스를 제공한다. 이는 여러 층의 여분 데이터를 생성하는데, 이는 프로세싱을 늦추고 과도하게 메모리를 소비한다. 일부 실시예들은 객체 API들이 데이터 구조들이 성능 및 메모리 소비에 관하여 최적으로 이루어지는 동일한 시기에 프로그래머에 대해 최적으로 이루어질 수 있도록 자신의 데이터로부터 객체들을 분리하여 이 문제를 해결한다. 일부 실시예들은 위의 섹션 II-X에서 설명된 바와 같이 문서를 재구조화하기 위한 API를 이용한다. 그러나, 당업자라면 이러한 API가 파싱된 입력 데이터의 임의의 종류의 분석에 대해 사용될 수 있음을 알 수 있다.
일부 실시예들은 사용자가 명확한 제한이 없는 API의 클래스 멤버들의 독립적이고, 수정가능한 자신의 사본을 갖는 것처럼 사용자(예컨대, 프로그래머 또는 API를 이용하는 소프트웨어 애플리케이션)에게 보이는 API를 제공한다. 즉, 이는 API를 통해 반환된 임의의 객체가 완전히 사용자에 의해 수정될 수 있는 것처럼 사용자에게 나타난다. 그러나, 일부 실시예들에서, 객체들은 완전히 필요한 경우에만 자신을 실제로 복사할 것이고, 대부분의 경우들에서 실제로 사용되는 메모리의 양을 최소화하는 방식으로 메모리를 관리할 것이다. 일부 실시예들의 메모리 관리는 다른 객체들에 의한 포인터들의 사용을 계속하여 추적하는 공유 메모리 객체를 갖는 포인터들의 정렬된 어레이를 이용하여 이루어진다. 일부 실시예들에서, 다양한 객체들은 모두 공유된 메모리 객체를 통해 동일한 포인터 어레이를 참조할 수 있어 모든 분석 단계에서 데이터 복사하는 것에 비해 상당한 메모리 절약을 가능하게 한다. 당업자라면 포인터들이 아래의 특정 특징들을 설명하는데 사용되는 반면, 임의의 종류의 참조 데이터 구조가 사용될 수 있다는 것을 알 수 있다.
A. 공유 포인터들로 문서 재구조화
일부 실시예들은 위에서 설명된 것과 같은 API를 이용하여 문서를 재구조화한다. 도 103는 문서를 효과적으로 재구조화하기 위한 일부 실시예들의 프로세스(10300)를 개념적으로 도시한다. 프로세스(10300)는 도 104와 함께 설명된다. 도 104는 문서(10400)가 파싱되고 프로세스(10300)에 따라 분석되는 시퀀스를 도시한다.
도 103에 도시된 바와 같이, 프로세스(10300)는 (단계 10305에서) 문서의 부분을 수신한다. 일부 실시예들에서, 문서 부분은 페이지이고, 프로세스는 페이지별로 작동한다. 일부 실시예들에서, 문서 부분은 전체 문서, 문서의 섹션, 또는 페이지 상의 구역이다. 프로세스는 그 다음 (단계 10310에서) 문서를 파싱하여 문서 부분 내의 문자들을 결정하고, (단계 10315에서) 파싱된 데이터에 대한 문자들의 어레이를 저장한다.
도 104는 문서(10400)가 랜덤으로 정렬된 문자들의 어레이(10405)로 파싱되는 것을 도시한다. 이 예들이 어레이들을 사용하는 반면, 당업자라면 구조화된 임의의 적절한 데이터가 사용될 수 있음을 알 수 있다. 일부 실시예들에서, 문서를 파싱하는 것은 문서를 나타내는 바이트들의 스트림을 읽는 것 및 이 스트림을 스트림 내의 정보의 사용가능한 표현(이를 테면 문자 어레이)으로 바꾸는 것을 수반한다. 스트림 내의 문자들은 일부 실시예들에서 랜덤 순서로 읽히는데, 이는 어레이(10405)의 순서가 랜덤인 이유이다. 일부 실시예들의 문자들은 좌표 및/또는 페이지 번호를 갖는다. 일부 실시예들에서, 각 문자는 연관된 좌표 또는 페이지 번호 값을 갖는 객체로 저장된다.
프로세스(10300)는 (단계 10320에서) 문서 부분에 대한 문자들을 정렬하는 포인터들의 정렬된 어레이를 정의한다. 일부 실시예들에서, 페이지에 대한 문자들은 위에서 아래로의 제1 정렬 및 왼쪽에서 오른쪽으로의 제2 정렬로 정렬된다. 문자 어레이 내의 복수의 페이지들을 저장하는 일부 실시예들은 우선 페이지별로 정렬된다. 도 104는 정렬된 문자들에 대해 정의되는 포인터들(10410)의 어레이를 도시한다. 제1 포인터(10411)는 어레이(10405) 내의 레터 "L"를 가리키고, 제2 포인터(10412)는 레터"o"를 가리킨다. 별도의 새로운 어레이를 정의 및 저장하기 보다 최초 문자 어레이에 대한 포인터들의 어레이를 정의하는 것이 일부 실시예들에서 메모리를 절약한다.
프로세스는 다음으로 (단계 10325에서) 스트링 객체들을 다루는 명령어들을 수신한다. 일부 실시예들은 포인터를 정렬된 포인터들의 어레이 내의 위치 및 얼마나 많은 문자들이 스트링 내에 있는지의 카운트로 정의한다. 예를 들어, 전체 페이지에 대한 스트링 객체는 정렬된 포인터 어레이 내의 제1 포인터(맨위 가장 왼쪽의 문자)를 가리키고 페이지 상의 문자들의 수의 카운트를 제공한다.
일부 실시예들에서, 명령어들은 스트링 분리, 스트링 결합, 문자 추가, 문자 제거 및 문자 재정렬을 포함한다. 일부 실시예들에서 이러한 작업들은 문서를 재구조화하고 재구조화된 문서를 위의 섹션 II-X에서 설명되는 바와 같이 사용하는 프로세스의 일부로 호출된다. 예를 들어, 라인들이 병합되는 일부 경우에서, 문자들의 순서가 수정되어야 한다. 구역들이 정의되는 경우, 일부 실시예들은 각 구역에 대한 스트링들을 정의하는데, 이는 많은 경우에서 스트링 분리, 스트링 결합, 또는 이 둘을 수반한다.
명령을 수신한 후에, 프로세스는 (단계 10330에서) 명령어들이 이미 할당된 포인터들(예컨대, 단계(10320)에서 정의되는 정렬된 포인터 어레이)만을 이용하여 수행될 수 있다. 일부 실시예들에서, 스트링들을 분리하는 것은 이미 할당된 포인터들의 사용만을 수반한다. 문서 재구조화의 경우, 일부 프로세스들은 문자들의 분리(예컨대, 라인 식별, 라인 분리 등)만을 수반한다. 더욱이, 정렬된 포인터들의 어레이에서 서로에 대해 옆에 있는 스트링들을 결합시키는 것은 일부 실시예들에서 이미 할당된 포인터들의 사용만을 수반할 것이다.
도 104는 어떻게 문서(10400) 내의 두 라인들이 어레이(10410) 내의 이미 할당된 포인터들을 참조하는 두 스트링 객체들(10415 및 10420)을 가져오는지를 도시한다. 제1 라인이 L(10411)에 대한 포인터를 가리키고 15의 카운트(제1 라인의 문자들의 수)를 갖는 스트링 객체(10415)에 의해 정의된다. 제2 라인은 s(10413)에 대한 포인터를 가리키고 7의 카운트(제2 라인 상의 문자들의 수)를 갖는 스트링 객체(10420)에 의해 정의된다. 이러한 라인들을 정의하기 위해서, 어떠한 새로운 포인터들도 할당될 필요가 없다. 문서를 재구조화하는데 수반될 수 있는 수백 또는 수천 단계들에 걸쳐서, 이는 (어레이가 검색될 필요가 없기 때문에) 큰 메모리 및 프로세싱 시간 효율성을 가져올 수 있다.
동일한 포인터들(10410)이 그 다음 워드들이 식별되는 경우 사용될 수 있다. 예를 들어, 스트링 객체들(10425 및 10430)은 문서(10400) 내의 워드들 중 둘을 정의한다. 이 워드들은 스트링 객체들(10415 및 10420)과 동일한 시작 포인터들을 가리키지만, 워드들이 라인들보다 짧기 때문에 상이한 카운트를 갖는다. 그러나, 새로운 포인터들이 이러한 워드들을 정의하는데 필요하지 않고, 새로운 스트링 객체들만이 필요하다. 전체 문서에 대하여, 수백 또는 수천의 상이한 스트링 객체들은 모두 동일한 포인터 어레이(이를 테면 포인터들(10410))를 참조할 수 있고, 새로운 포인터 어레이들에 대해 메모리를 반복적으로 할당하는데 있어 큰 메모리 절약을 가져온다.
수신된 명령어들이 이미 할당된 포인터들만을 이용하여 수행될 수 있는 경우, 프로세스(10300)는 (단계 10335에서) 이미 메모리에 할당된 공유 포인터들을 이용하여 명령어들을 수행한다. 프로세스는 그 다음 아래에서 설명되는 단계(10355)로 진행한다. 그렇지 않으면, 프로세스는 (단계 10340에서) 명령어들이 새로운 포인터들의 집합을 이용하여 수행될 수 있는지 여부를 판단한다.
일부 실시예들은 명령어들이 이미 할당된 포인터들만으로 수행될 수 없는 경우 새로운 포인터들을 할당하지만, 명령어들은 문자 어레이의 직접 데이터 조작을 요구하지 않는다. 일부 실시예들에서, 공유된 포인터들의 어레이 내에서 서로 옆에 있지 않은 스트링들을 결합시키는 것은 새로운 포인터들의 할당을 요구하는데, 이는 결합된 스트링들에 대한 스트링 객체가 정렬된 어레이 내의 하나의 포인터를 가리키고 해당 어레이 내에서 앞으로 나아감으로써 표현될 수 없기 때문이다. 예를 들어, 도 104를 참조하면, 만약 작업이 제1 라인을 제2 라인의 마지막으로 덧붙이는 것을 요구하면, 덧붙여진 라인들에 대한 스트링 객체는 어레이(10410)를 가리킬 수 없다. 대신, 포인터들의 새로운 어레이가 요구되는 순서로 할당되어야 한다.
수신된 명령어들이 새로운 포인터들의 할당을 이용하여 수행될 수 있는 경우, 프로세스는 (단계 10345에서) 문자 어레이에 대한 포인터들의 새로운 할당을 이용하여 명령어들을 수행한다. 프로세스는 그 다음 아래에서 설명되는 단계(10355)로 진행한다. 그렇지 않으면, 프로세스는 (단계 10350에서) 부분의 새로운 사본 또는 전체 문자 어레이를 이용하여 명령어들을 수행한다. 직접적으로 문서 데이터를 편집하는 것(즉, 사용자가 워드를 문서에 추가하는 것)은 일부 실시예들에서 실제 문자들의 어레이를 조작하지 않고는 수행될 수 없는 명령어들의 예이다. 그러나, 워드를 문서에 추가하는 사용자는 완전히 새로운 사본을 요구하지 않고, 대신 문자들을 어레이로 추가하고 그 다음 문자들에 대한 새로운 포인터들의 어레이를 정의하여 다루어질 수 있다. 유사하게, 텍스트 라인들을 병합하는 것은 종종 새로운 포인터들의 어레이를 요구하는데, 이는 하나의 텍스트 라인으로부터의 문자가 다음 텍스트 라인으로 삽입될 수 있어, 서로에 대한 문자들의 순서를 변경하기 때문이다.
다음으로, 프로세스는 (단계 10355에서) 스트링 객체들을 조작하는 더 많은 명령어들이 수신되었는지 여부를 판단한다. 더 많은 명령어들이 수신된 경우, 프로세스는 위에서 설명되는 단계(10330)로 진행하여, 명령어들을 수행하는 가장 효율적인 방식을 결정한다. 그렇지 않으면, 프로세스는 종료된다. 이 프로세스는 메모리의 계층 구조 및 공유된 데이터를 이용하여 이루어지는 프로세싱 절약을 도시한다. 원래의 데이터가 다양한 포인터 어레이들 간에서 공유되고, 각 포인터 어레이가 많은 스트링 객체들 사이에서 공유된다. 수신된 명령어들의 각 세트(예컨대, API로의 각 호출)에 대해, 명령어들을 수행하는 가장 효율적인 방식이 사용된다. 이상적으로, 명령어들은 임의의 새로운 포인터들의 생성을 요구하지 않고, 새로운 스트링 객체들만이 생성될 필요가 있다. 만약 이것이 가능하지 않으면, 메모리 절약은 새로운 문자 어레이를 생성하는 것에 반해 원래의 데이터를 공유하는 새로운 포인터들을 생성하여 여전히 이루어질 수 있다.
프로세스(10300)가 스트링 객체들 구체적으로 문서 재구조화를 위한 스트링 객체들을 참조하여 설명되었지만, 당업자라면 이미 할당된 포인터들을 이용하고 그 다음 데이터를 복사하는 것에 비해 새로운 포인터들을 할당하기 위한 선호를 나타내어 얻어지는 효율성들이 메모리 및 프로세싱 시간이 최고인 넓은 범위의 문제점들에 적용될 수 있음을 알 수 있다.
B. 공유 메모리 객체들
일부 실시예들에서, 포인터들의 각 어레이는 어레이 내의 포인터들의 사용을 관리하는 공유 메모리 객체를 갖는다. 일부 실시예들에서, 특정 포인터 어레이에 대한 공유 메모리 객체는 특정 어레이를 참조하는 데이터 객체들(예컨대, 스트링 객체들)을 추적한다. 일부 실시예들에서, 공유 메모리 객체는 또한 메모리에서 포인터 어레이가 시작하는 곳을 또한 추적한다.
도 105는 본 발명의 일부 실시예들에 따라 데이터가 저장되는 방식을 도시한다. 도 105는 데이터 어레이(10505), 정렬된 포인터들의 어레이(10510), 공유 메모리 객체(10515), 및 데이터 객체들(10520)을 도시한다. 데이터 어레이(10505)는 일부 실시예들에서 랜덤으로 정렬된 파싱된 데이터이다(예컨대, 파싱된 문서로부터의 문자 데이터).
정렬된 포인터들의 어레이(10510)는 데이터 어레이(10505)에 대한 포인터들의 어레이이다. 각 포인터는 일부 실시예들에서 어레이(10505) 내의 데이터 아이템을 가리킨다. 포인터들은 데이터의 정렬에 기초한 순서로 배열된다. 예를 들어, 문서의 경우, 포인터들은 일부 실시예들에서 이들이 가리키는 문자들의 읽기 순서로 배열된다.
각 데이터 객체(10520)는 포인터 어레이(10510) 및 카운트 내의 위치에 대한 참조를 포함한다. 특정 데이터 객체에 대한 포인터 어레이(10510) 내의 위치는 데이터 객체가 참조하는 데이터의 제1 조각을 가리키는 포인터이다. 예를 들어, 데이터 객체가 워드 "Array"에 대한 스트링 객체인 경우, 데이터 객체는 "A"를 가리키는 포인터가 발견되는 포인터 어레이 내의 위치를 지정한다. 데이터 객체는 또한 5의 카운트를 포함한다.
도 105는 또한 공유 메모리 객체(10515)를 도시한다. 일부 실시예들에서, 공유 메모리 객체는 데이터 객체들(10520)에 의해 정렬된 어레이(10510)의 사용을 관리한다. 공유 메모리 객체(10515)는 어레이(10510)를 참조하는 데이터 객체들(10520) 수의 카운트를 보유한다.
일부 실시예들은 (어레이의 시작을 가리키고 전체 어레이의 수를 갖는) 일차 데이터 객체가 정의되는 경우 공유 메모리 객체(10515)를 정의하지 않는다. 그러나, 일단 이차 데이터 객체가 어레이를 가리키면, 어레이는 이제 공유되고, 공유 메모리 객체(10515)가 얼마나 많은 데이터 객체가 어레이를 공유하는지 및 어레이의 시작이 어디인지를 추적하도록 정의되는데, 이는 각 개별 객체가 이 정보를 갖지 않기 때문이다. 따라서, 일부 실시예들에서, 데이터 객체들(10520)은 데이터 객체가 포인터 어레이를 가리키도록 설정된 경우 포인터 어레이에 대한 공유 메모리 객체를 예시하는 기능을 이 기능이 없는 경우 호출할 수 있다. 객체들(10520)의 수가 0으로 떨어지는 경우, 공유 메모리 객체(10515)는 포인터들(10510)을 할당해제하고 그 다음 자신을 메모리로부터 제거한다.
일부 실시예들에서, 포인터 어레이(10510)를 공유하는 각 개별 데이터 객체(10520)는 다른 객체들(10520)이 또한 어레이(10510) 내의 포인터들을 이용하고 있다는 정보를 갖지 않는다. 더욱이, 객체들(10520)은 어레이(10510)의 시작 또는 끝의 정보가 없고, 단지 어레이(10510) 내의 일부 포인트를 참조할 뿐이다. 그러나, 일부 실시예들의 공유 메모리 객체(10520)는 어레이의 시작이 메모리 내의 어디에 있는지를 안다.
C. 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명되는 API가 특정 머신, 이를테면 컴퓨터, 매체 재생기, 셀 폰(예컨대, iPhone®), 또는 기타 핸드헬드 또는 리소스 제한 장치들(또는 컴퓨터 판독가능 매체에 저장된 것) 상에서 실행되는 소프트웨어로 구현된다. 도 106은 위의 서브섹션 A 및 B에서 설명되는 효율성 기술을 이용하면서 문서 재구조화 프로세스들을 수행하는 API(10600)를 개념적으로 도시한다.
API(10600)는 기하학적 분석 모듈(10610), 문서 재구조화 모듈(10615), 및 디스플레이 및 상호작용 모듈(10620)을 포함한다. API(10600)는 일부 실시예들에서 외부 애플리케이션(10605)에 의해 사용되도록 제공되는 기능, 절차, 방법, 클래스 및/또는 프로토콜의 세트이다.
API(10600)는 외부 애플리케이션들(10605)에 의해 공용 방법들에 대한 요구들(에컨대, 기능 호출들)을 수신한다. 일부 실시예들에서, 여러 외부 애플리케이션들이 있다. 예를 들어, API가 핸드헬드 장치(예컨대, iPhone®) 상에서 제공되는 경우에서, 외부 애플리케이션들은 PDF 뷰어(예컨대, e-북 리더), 워드 프로세서(예컨대, Microsoft Word, Apple Pages 등), 웹 브라우저(예컨대, Microsoft Internet Explorer, Apple Safari, Mozilla Firefox 등) 등이 될 수 있다.
API(10600)의해 제공되는 다양한 공용 방법들은 기하학적 분석 및 문서 재구조화를 수행하고, 문서 객체 모델 등에 액세스하는 다양한 사유(private) 방법들을 호출한다. 데이터(예컨대, 파서에 의해 처음 식별된 원시 요소들)가 문서 재구조화 데이터(10625)에 저장된다. 외부 애플리케이션들에게는 이들이 (예컨대, 문자들을 조작하여 워드들, 텍스트 라인들 등을 식별하는 동안에) 데이터에 액세스할 수 있는 것처럼 보일 수 있지만, 사실 API를 통해 외부 애플리케이션들에 의해 조작되는 클래스 멤버들은 위의 서브섹션들 A 및 B에서 설명된 바와 같이 클래스 멤버들을 데이터에 대한 참조들만을 저장하도록 정의함으로써 실제 데이터로부터 단절된다.
XII . 전체 소프트웨어 아키텍처
일부 실시예들에서, 위에서 설명된 프로세스들은 특정 머신, 이를테면 컴퓨터, 매체 재생기 셀 폰(예컨대, iPhone®), 또는 기타 핸드헬드 또는 리소스 제한 장치들(또는 컴퓨터 판독가능 매체 내에 저장된 것들) 상에서 실행되는 소프트웨어로 구현된다. 도 107은 문서를 재구조화, 디스플레이 및 이와 상호동작하기 위한 일부 실시예들의 애플리케이션(10700)의 소프트웨어 아키텍처를 개념적으로 도시한다. 일부 실시예들에서, 애플리케이션은 스탠드-어론 애플리케이션이거나 또 다른 애플리케이션에 통합되는 반면, 다른 실시예들에서 애플리케이션은 운영 체제 내에서 구현될 수 있다. 또 다른 실시예들에서 도 107에 도시된 모듈들은 복수의 애플리케이션들 간에서 분리된다. 예를 들어, 일부 실시예들에서, 하나의 애플리케이션은 문서 객체 모델을 생성하는 반면, 또 다른 애플리케이션은 문서를 디스플레이하고 문서 객체 모델과 상호동작한다(아래 전체 설명 참조).
애플리케이션(10700)은 파서(10710), 프로파일링 모듈들(10720), 의미적 재구조화 모듈들(10730), 클러스터 분석 모듈들(10740), 사용자 상호작용 모듈들(10750), 및 디스플레이 조정 모듈들(10760)을 포함한다. 애플리케이션(10700)은 또한 문서 데이터 저장소(10715), 프로파일 저장소(10725), 클러스터 분석 저장소(10735), 및 문서 객체 모듈 저장소(10745)를 포함한다. 도 107는 또한 커서 제어기 드라이버(10775), 키보드 드라이브(10780), 및 디스플레이 모듈(10785)을 포함하는 운영 체제(10770)를 도시한다. 일부 실시예들에서, 도시된 바와 같이, 커서 제어기 드라이버(10775), 키보드 드라이버(10780), 및/또는 디스플레이 모듈(10785)은 합성 애플리케이션이 운영 체제와는 다른 스탠드-어론 애플리케이션인 경우에도 운영 체제(10770)의 일부이다.
도시된 바와 같이, 파서(10710)는 문서(10705)를 수신한다. 일부 실시예들에서, 문서는 벡터 그래픽(예컨대, PDF)을 포함하는 포맷되지 않은 문서이다. 파서(10710)는 문서 정보를 파싱하고 파싱된 데이터를 문서 데이터 저장소(10715)에 저장한다. 일부 실시예들에서, 파싱된 텍스트 데이터가 위의 섹션 XI에 설명된 바와 같이 문자들의 어레이로 저장된다.
의미적 재구조화 모듈들(10730)은 문서를 재구조화하여 문서 데이터(10715)로부터 문서 객체 모델(10745)을 생성한다. 의미적 재구조화 모듈들(10730)은 구역 분석, 가이드 및 여백 식별, 레이아웃 및 흐름 식별, 테이블 식별, 및 결합된 그래프 식별과 같은 프로세스들을 수행한다.
의미적 재구조화 모듈들의 출력은 또한 프로파일링 모듈들(10720)로 보내진다. 프로파일 모듈들(10720)은 계층적 프로파일들에 매칭하는 프로파일 매칭 엔진을 포함하고 의미적 재구조화 모듈들에 위의 섹션 VII에서 설명된 바와 같이, 어떻게 재구조화 수행을 계속하는지를 알려준다.
의미적 재구조화 모듈들(10710)은 또한 정보를 클러스터 분석 모듈들(10740)로 전달한다. 클러스터 분석 모듈들(10740)은 일부 실시예들에서 가이드 식별에 대한 밀도 클러스터링, 워드 및 조각 틈 정보에 대한 차이 클러스터링, 및 결합되어야 하는 그래프들을 식별하기 위한 경계 클러스터링을 수행한다. 클러스터 분석 모듈들은 클러스터 분석 저장소(10735)를 이용하여 어레이들 및 지표들을 섹션 X에 설명된 바와 같이 저장한다. 클러스터 분석의 결과들은 그 다음 의미적 재구조화 모듈들(10730)로 전달된다.
일단 의미적 재구조화 모듈들(10730)이 문서를 재구조화하면, 이들은 문서 객체 모델(10745)을 저장한다. 문서 객체 모델(10745)은 의미적으로 재구조화된 문서에 관한 모든 정보, 이를테면 위의 섹션 II에서 설명된 콘텐츠로 채워진 구역 그래프를 저장한다.
디스플레이 조정 모듈들(10760)은 문서 객체 모델(10745)를 이용하여 어떻게 문서를 디스플레이할지를 판단한다. 예를 들어, 일부 실시예들의 디스플레이 조정 모듈들은 작은 스크린 장치 상에 문서를 디스플레이 하기 위한 위의 섹션 VIII에 설명된 프로세스들을 수행한다. 디스플레이 조정 모듈들(10760)은 디스플레이 정보를 디스플레이 모듈(10785)로 전달하는데, 이는 스크린 상의 실제 디스플레이를 관장한다.
사용자 상호작용 모듈들(10750)은 커서 제이거 드라이버(10775) 및 키보드 드라이버(10780)로부터 입력 정보를 수신한다. 입력 정보는 사용자 상호작용 모듈들(10750)에게 문서에 대한 작업들, 이를테면 위의 섹션 IX에서 설명된 선택들 뿐만 아니라 문서의 편집을 수행하도록 한다. 만약 문서가 편집되면, 문서 객체 모델(10745)이 이 편집을 반영하도록 수정되어야 한다.
일부 실시예들에서, 위에서 설명된 모듈들 또는 기타 모듈들의 일부에 의해 수행되는 프로세스들의 결과들이 전자 저장소에 (예컨대, 문서 객체 모델의 일부로) 저장된다. 문서 객체 모델은 그 다음 사용자가 (예컨대, 터치스크린, 커서 제어 장치 등을 통해) 문서를 리뷰 및/또는 상호작용할 수 있도록 전자 디스플레이 장치(예컨대, 핸드헬드 장치, 컴퓨터 스크린 등) 상에 문서를 디스플레이하는데 사용될 수 있다.
도 108은 위에서 설명된 애플리케이션(10700)과 같은 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체를 제조하기 위한 일부 실시예들의 프로세스(10800)를 개념적으로 도시한다. 일부 실시예들에서, 컴퓨터 판독가능 매체는 분배가능한 비휘발성 전자 저장소 매체(예컨대, CD-ROM, 하드 디스크, 장치 펌웨어 등)이다.
보여진 바와 같이, 프로세스(10800)는 (단계 10805에서) 도 1의 모듈들(110)과 같은 기하학적 분석 모듈들을 정의하여 시작된다. 이러한 모듈들의 보다 자세한 예들은 도 17의 경계 식별 모듈(1705), 간격 및 교차점 식별 모듈(1710), 구역 식별 모듈(1715), 및 구역 그래프 빌더(1720)를 포함한다. 이 모듈들은, 일부 실시예들에서, 원시 요소들의 세트들 간의 경계들을 식별하고 경계들에 의해 경계가 이루어지는 영역들을 식별한다. 일부 실시예들에서, 모듈들은 그래픽 원시 요소들을 잠재적 경계들로 식별하고, 잠재적 경계들의 일부를 실제 경계들로 식별하며, 실제 경계들을 횡단하여 구역들을 식별하고, 계층적 문서 모듈을 식별된 구역들로 정의한다.
프로세스는 그 다음 (단계 10810에서) 도 1의 모듈들(120)과 같은 문서 재구조화 모듈들을 정의한다. 일부 실시예들에서, 도 107의 의미적 재구조화 모듈들(10730)은 기하학적 분석 모듈들 및 문서 재구조화 모듈들을 포함하는 반면, 다른 실시예들은 하나 또는 다른 하나만을 포함한다.
프로세스(10800)는 그 다음 (단계 10815에서) 계층적 프로파일들의 세트, 이를테면 프로파일들(10725)을 정의한다. 다음으로, 프로세스는 (단계 10820에서) 클러스터 분석을 수행하기 위한 모듈들의 세트를 정의한다. 클러스터 분석 모듈들(10740)은 이러한 모듈들의 예이다. 프로세스는 그 다음 (단계 10825에서) 문서를 알맞게 디스플레이하기 위한 모듈들, 이를테면 디스플레이 조정 모듈들(10760)을 정의한다. 다음으로, 프로세스(10800)는 (단계 10830에서) 문서와의 사용작 상호작용들을 수신하기 위한 모듈들, 이를테면 모듈들(10750)을 정의한다.
프로세스는 또한 (단계 10835에서) 다른 모듈들을 정의한다. 예를 들어, 일부 실시예들은 들어오는 문서(예컨대, 애플리케이션에 의해 수신된 문서)를 파싱하거나 다양한 문서 재구조화 작업들을 수행하는 경우 메모리 및 프로세싱 시간을 효율적으로 이용하기 위한 모듈들을 포함한다.
프로세스(10800)는 그 다음 (단계 10840에서) 컴퓨터 판독가능 저장 매체 상에 애플리케이션을 저장한다. 위에서 언급된 바와 같이, 일부 실시예들에서 컴퓨터 판독가능 매체는 분배가능한 CD-ROM이다. 일부 실시예들에서, 매체는 하나 이상의 고체 상태 장치, 하드 디스크, CD-ROM, 또는 기타 비휘발성 컴퓨터 판독가능 저장 매체이다. 이 매체는 일부 실시예들에서 핸드헬드 장치(예컨대, iPhone®)의 펌웨어가 될 수 있다.
당업자라면 프로세스(10800)에 의해 정의된 다양한 요소들이 본 발명의 일부 실시예들을 포함하는 애플리케이션을 위한 컴퓨터 판독가능 저장 매체에 저장되고 정의될 수 있는 모듈들, 룰들 및 프로세스들을 망라하지 않음을 알 수 있다. 더욱이, 일부 실시예들이 프로세스(10800)에 의해 정의된 요소들 전부 보다 이들의 서브세트만을 포함하는 것이 동일하게 가능하다.
또한, 프로세스(10800)는 개념적인 프로세스이고, 실제 구현은 변할 수 있다. 예를 들어, 상이한 실시예들은 상이한 순서로 다양한 요소들을 정의할 수 있고, 여러 요소들을 하나의 작업으로 정의할 수 있으며, 단일 요소의 정의를 복수의 작업들로 분해할 수 있다. 더욱이, 프로세스(10800)는 여러 서브-프로세스들로 구현될 수 있거나 매크로-프로세스에서 다른 작업들과 결합될 수 있다.
XIII . 컴퓨터 시스템
위에서 설명된 특징 및 애플리케이션들 중 많은 것이 컴퓨터 판독가능 저장 매체(컴퓨터 판독가능 매체라고도 함) 상에 기록된 명령어들의 세트로 지정되는 소프트웨어 프로세스들로 구현된다. 이러한 명령어들이 하나 이상의 연산 요소들(이를 테면 프로세서들 또는 ASIC 및 FPGA와 같은 기타 연산 요소들)에 의해 실행되는 경우, 이들은 연산 요소들로 하여금 명령어들 내에 표시된 액션들을 수행하도록 한다. 컴퓨터는 가장 넓은 의미로 해석되고, 프로세서를 갖는 임의의 전자 장치를 포함할 수 있다. 컴퓨터 판독가능 매체의 예들은 이하에 한정되지 않지만, CD-ROM, 플래시 드라이브, RAM 칩, 하드 드라이브, EPROM 등을 포함한다. 컴퓨터 판독가능 매체는 캐리어 파 및 무선으로 또는 유선 연결을 통해 전달되는 전자 신호들을 포함하지 않는다.
본 명세서에서, "소프트웨어"라는 용어는 리드 온니 메모리에 있는 펌웨어 또는 프로세서에 의한 프로세싱을 위해 메모리로 읽혀질 수 있는 자기 저장소 내에 저장된 애플리케이션들을 포함하는 것으로 의도된다. 또한, 일부 실시예들에서, 복수의 소프트웨어 발명들은 더 큰 프로그램의 서브 파트들로 구현될 수 있는 한편 별도의 소프트웨어 발명들로 남을 수 있다. 일부 실시예들에서, 복수의 소프트웨어 발명들은 또한 별도의 프로그램들로 구현될 수 있다. 마지막으로, 본 명세서에서 설명된 소프트웨어 발명을 함께 구현하는 별도의 프로그램들의 임의의 조합은 본 발명의 범위 내에 있다. 일부 실시예들에서, 하나 이상이 컴퓨터 시스템 상에서 작동하도록 설치된 경우 소프트웨어 프로그램들은 소프트웨어 프로그램들의 작업을 실행 및 수행하는 하나 이상의 특정 머신 구현을 정의한다.
도 109는 본 발명의 일부 실시예들이 구현되는 컴퓨터 시스템을 도시한다. 이러한 컴퓨터 시스템은 다양한 유형의 컴퓨터 판독가능 매체 및 다양한 유형의 컴퓨터 판독가능 매체에 대한 인터페이스들을 포함한다. 컴퓨터 시스템(10900)은 버스(10905), 프로세서(10910), 그래픽 프로세싱 유닛(graphic processing unit; GPU, 10920), 시스템 메모리(10925), 리드-온니 메모리(10930), 영구 저장 장치(10935), 입력 장치들(10940), 및 출력 장치들(10945)을 포함한다.
버스(10905)는 통신적으로 컴퓨터 시스템(10900)의 다양한 내부 장치들을 연결시키는 모든 시스템, 주변 장치, 및 칩셋 버스들을 집합적으로 나타낸다. 예를 들어, 버스(10905)는 통신적으로 프로세서(10910)를 리드-온니 메모리(10930), GPU(10920), 시스템 메모리(10925) 및 영구 저장 장치(10935)와 연결한다.
이러한 다양한 메모리 유닛들로부터, 프로세서(10910)는 본 발명의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다. 일부 실시예들에서, 프로세서는 필드 프로그램 가능 게이트 어레이(Field Programmable Gate Array; FPGA), ASIC, 또는 다양한 명령어들을 실행시키기 위한 기타 전자 구성요소들을 포함한다. 일부 명령어들이 GPU(10920)로 전달되고 이에 의해 실행된다. GPU(10920)는 다양한 순열들을 오프로딩하거나 프로세서(10910)에 의해 제공된 이미지 프로세싱을 보완할 수 있다. 일부 실시예들에서, 이러한 기능이 CoreImage의 커널 셰이딩 언어(kernel shading language)를 이용하여 제공될 수 있다.
리드-온니 메모리(ROM, 10930)는 정적 데이터 및 프로세서(10910) 및 컴퓨터 시스템의 다른 모듈들에 의해 필요한 명령어들을 저장한다. 영구 저장 장치(10935)는 반면 읽기 및 쓰기 메모리 장치이다. 이 장치는 컴퓨터 시스템(10900)이 꺼져 있는 경우에도 명령어들 및 데이터를 저장하는 비휘발성 메모리 유닛이다. 본 발명의 일부 실시예들은 대용량 저장 장치(이를 테면 자기 또는 광 디스크 및 이에 상응하는 디스크 드라이브)를 영구 저장 장치(10935)로 이용한다.
다른 실시예들은 제거가능한 저장 장치(이를 테면 플로피 디스크, 플래시 드라이브, 또는 ZIP® 디스크, 및 이에 상응하는 디스크 드라이브)를 영구 저장 장치로 사용한다. 영구 저장 장치(10935)와 마찬가지로, 시스템 메모리(10925)는 읽기 및 쓰기 메모리 장치이다. 그러나, 저장 장치(10935)와는 다르게, 시스템 메모리는 휘발성 읽기 및 쓰기 메모리 이를 테면 랜덤 액세스 메모리이다. 시스템 메모리는 명령어들의 일부 및 프로세서가 실행 시간시 필요한 데이터를 저장한다. 일부 실시예들에서, 본 발명의 프로세스들은 시스템 메모리(10925), 영구 저장 장치(10935) 및/또는 리드-온니 메모리(10930)에 저장된다. 예를 들어, 다양한 메모리 유닛들은 일부 실시예들에 따라 멀티미디어 아이템들을 프로세싱하기 위한 명령어들을 포함한다. 이러한 다양한 메모리 유닛들로부터, 프로세서(10910)는 일부 실시예들의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다.
버스(10905)는 또한 입력 및 출력 장치들(10940 및 10945)로 연결된다. 입력 장치들은 사용자가 정보 및 선택 명령어들을 컴퓨터 시스템으로 통신할 수 있게 한다. 입력 정보들(10940)은 글자 및 숫자 키보드 및 포인팅 장치들("커서 제어 장치들"이라고도 함)을 포함한다. 출력 장치들(10945)은 컴퓨터 시스템에 의해 생성된 이미지들을 디스플레이한다. 출력 장치들은 프린터들 및 디스플레이 장치들, 이를테면 음극선 튜브(cathode ray tubes; CRT) 또는 액정 디스플레이(LCD)를 포함한다.
마지막으로, 도 109에 도시된 바와 같이, 버스(10905)는 또한 컴퓨터(10900)를 네트워크 어댑터(도시되지 않음)를 통해 네트워크(10965)로 결합시킨다. 이러한 방식으로, 컴퓨터는 컴퓨터들의 네트워크의 일부, 이를 테면 로컬 영역 네트워크("LAN"), 광역 네트워크("WAN"), 또는 인트라넷, 또는 네트워크들의 네트워크, 이를테면 인터넷이 될 수 있다. 컴퓨터 시스템(10900)의 임의 또는 전체 구성요소들이 본 발명과 함께 사용될 수 있다.
일부 실시예들은 전자 구성요소들, 이를테면 마이크로프로세서들, 머신 판독가능 또는 컴퓨터 판독가능 매체(이와 달리 컴퓨터 판독가능 저장 매체, 머신 판독가능 매체, 또는 머신 판독가능 저장 매체라고 함)에 컴퓨터 프로그램 명령어들을 저장하는 저장소 및 메모리를 포함한다. 이러한 컴퓨터 판독가능 매체의 일부 예들은 RAM, ROM, 리드 온니 콤팩트 디스크(CD-ROM), 기록가능 콤팩트 디스크(CD-R), 다시쓰기 가능한 콤팩트 디스크(CD-RW), 리드-온니 디지털 다용도 디스크(예컨대, DVD-ROM, 듀얼-레이어 DVD-ROM), 다양한 기록가능/다시쓰기 가능 DVD(예컨대, DVD-RAM, DVD-RW, DVD+RW 등), 플래시 메모리(예컨대, SD 카드, 미니-SD 카드, 마이크로-SD 카드 등), 자기 및/또는 고체 상태 하드 드라이브들, 리드-온니 및 기록가능 블루레이 디스크, 초밀도 광 디스크, 임의의 기타 광 또는 자기 매체, 및 플로피 디스크를 포함한다. 컴퓨터 판독가능 매체는 적어도 하나의 프로세서에 의해 실행가능한 컴퓨터 프로그램을 저장할 수 있고 다양한 작업들을 수행하기 위한 명령어들의 세트들을 포함한다. 명령어들의 세트들을 저장 및 실행하도록 구성되는 하드웨어 장치들의 예들은 이하에 한정되지 않지만 애플리케이션 특정 집적 회로들(application specific integrated circuits; ASICs), 필드 프로그램가능 게이트 어레이들(field programmable gate arrays; FPGA), 프로그램가능 로직 장치들(programmable logic devices; PLDs), ROM, 및 RAM 장치들을 포함한다. 컴퓨터 프로그램들 또는 컴퓨터 코드의 예들은 이를테면 컴파일러에 의해 생산되는 머신 코드, 및 컴퓨터, 전자 구성요소, 또는 인터프리터를 이용하는 마이크로프로세서에 의해 실행되는 더 높은 레벨의 코드를 포함하는 파일들을 포함한다.
본 명세서 및 본 출원서의 임의의 청구항들에서 사용되는 바와 같이, "컴퓨터", "서버", "프로세서" 및 "메모리"라는 용어들은 모두 전자 또는 기술적 장치들을 의미한다. 이러한 용어들은 사람들 또는 사람들의 그룹들을 제외한다. 명세서의 목적으로, 디스플레이하다 또는 디스플레이하는 이라는 용어는 전자 장치 상에 디스플레이하는 것을 의미한다. 이 명세서 및 본 출원서의 임의의 청구항들에서 사용되는 바와 같이, "컴퓨터 판독가능 매체" 및 "컴퓨터 판독가능 매체"라는 용어는 전체가 컴퓨터에 의해 판독가능한 형태로 정보를 저장하는 만질 수 있는 물리적 물체로 제한된다. 이러한 용어들은 임의의 무선 신호들, 유선 다운로드 신호들 및 임의의 다른 일시적인 신호들을 제외한다.
본 발명이 다양한 구체적인 내용들을 참조하여 설명되었지만, 당업자라면 본 발명이 본 발명의 사상을 넘지 않으면서 다른 구체적인 형태로 구현될 수 있음을 알 수 있다. 예를 들어, 일부 실시예들은 각 페이지가 단일 이미지로 정의되는 문서를 수신한다. 그러나, 일부 실시예들은 문서에 대해 광 문자 인식을 수행하여 글리프들을 인식하고, 일부 경우들에서 뒤에 문서를 가리키는 모양들(예컨대, 라인들, 직사각형들 등)이 재구조화될 수 있다. 또한, 일부 실시예들은 특정 원시 요소들에 대한 특정 기하학적 분석 및 문서 재구조화 작업들을 수행하는 것을 설명되었다. 그러나, 당업자라면 작업들은 다른 종류들의 원시 요소들에 적용될 수 있음을 알 수 있다. 예를 들어, 가이드 식별이 밀도 클러스터링을 이용하여 수직 경계를 형성하는 글리프들의 연관성을 식별하는(즉, 연관시키거나, 이의 연관성을 정의하는) 것을 수반하는 것으로 설명된다. 그러나, 유사한 작업들이 경계들을 형성하는 원시 모양들(예컨대, 점선)의 클러스터들을 찾는데 적용될 수 있다.
더욱이, 여러 도면들(도 3, 8, 9, 12, 15, 18, 20, 21, 25, 26, 31, 33, 36, 38, 40, 42, 48, 53, 55, 57, 62, 64, 66, 68, 71, 72, 78, 80-82, 84, 85, 87, 89, 94, 97, 99, 101, 103, 및 108 포함)이 개념적으로 프로세스들을 도시한다. 이러한 프로세스들의 특정 작업들은 도시되고 설명된 정확한 순서로 수행되지 않을 수 있고 구체적은 작업들이 하나의 연속적인 작업들로 수행되지 않을 수 있으며, 상이한 특정 작업들이 상이한 실시예들에서 수행될 수 있다. 더욱이, 프로세스는 여러 서브 프로세스들을 이용하여 구현되거나 더 큰 매크로 프로세스의 일부로서 구현될 수 있다. 따라서, 당업자라면 본 발명이 앞선 예시적인 자세한 설명들에 의해 제한되지 않고, 다만 첨부된 청구항들에 의해 정의됨을 알 수 있다.

Claims (237)

  1. 적어도 하나의 프로세싱 유닛에 의해 실행되는 경우 복수의 글리프(glyph)를 포함하는 문서를 분석하는 프로그램을 저장하는 머신 판독가능 매체로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 -
    상기 프로그램은,
    상기 문서 내의 상기 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들(associations)을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하고;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 상이한 단락들로서 식별하며;
    상기 문서의 페이지에 대하여, 상기 상이한 단락들 서로 간의 상대적 위치에 대해 설명하는 단락들에 대한 그래프를 생성하며;
    상기 생성된 그래프를 이용하여 상기 단락들을 상기 페이지의 상이한 레이아웃들에 할당하기 위한 명령어들의 세트들을 포함하는
    머신 판독가능 매체.
  2. 삭제
  3. 제1항에 있어서,
    상이한 워드들의 세트들을 상이한 단락들로서 식별하기 위해 워드들 간의 연관성들을 생성하기 위한 명령어들의 세트는,
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 텍스트 라인들로서 식별하고;
    텍스트 라인들 간의 연관성을 생성하여 텍스트 라인들의 세트를 단락으로서 식별하기 위한 명령어들의 세트들을 포함하는
    머신 판독가능 매체.
  4. 삭제
  5. 삭제
  6. 적어도 하나의 프로세싱 유닛에 의해 실행되는 경우 복수의 글리프를 포함하는 문서를 분석하는 프로그램을 저장하는 머신 판독가능 매체로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 -
    상기 프로그램은,
    상기 문서 내의 상기 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하고;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 텍스트 라인들로서 식별하며;
    인접한(adjacent) 텍스트 라인들의 수직 간격 속성들을 비교함으로써 텍스트 라인들 간의 연관성들을 생성하여 텍스트 라인들의 세트들을 상이한 단락들로서 식별하며;
    상기 단락들의 읽기 순서를 정의하기 위해 인접(contiguous)하지 않은 적어도 두 개의 단락들 간의 연관성을 정의하기 위한 명령어들의 세트들을 포함하는
    머신 판독가능 매체.
  7. 적어도 하나의 프로세싱 유닛에 의해 실행되는 경우 복수의 글리프를 포함하는 문서를 분석하는 프로그램을 저장하는 머신 판독가능 매체로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 -
    상기 프로그램은,
    상기 문서 내의 상기 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하고;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 텍스트 라인들로서 식별하며;
    인접한(adjacent) 텍스트 라인들의 수평 정렬 속성들을 비교함으로써 텍스트 라인들 간의 연관성들을 생성하여 텍스트 라인들의 세트들을 상이한 단락들로서 식별하며;
    상기 단락들의 읽기 순서를 정의하기 위해 인접(contiguous)하지 않은 적어도 두 개의 단락들 간의 연관성을 정의하기 위한 명령어들의 세트들을 포함하는
    머신 판독가능 매체.
  8. 적어도 하나의 프로세싱 유닛에 의해 실행되는 경우 복수의 글리프를 포함하는 문서를 분석하는 프로그램을 저장하는 머신 판독가능 매체로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 -
    상기 프로그램은,
    상기 문서 내의 상기 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하고;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 상이한 단락들로서 식별하며;
    상기 단락들의 읽기 순서를 정의하기 위해 인접(contiguous)하지 않은 적어도 두 개의 단락들 간의 연관성을 정의하며;
    단락들 간의 연관성을 생성하여 단락들의 세트를 칼럼으로서 식별하기 위한 명령어들의 세트를 포함하는
    머신 판독가능 매체.
  9. 복수의 글리프를 포함하는 문서를 분석하기 위한 프로그램을 정의하기 위한 방법으로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 - ,
    상기 문서 내의 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하기 위한 모듈을 정의하는 단계;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 상이한 단락들로서 식별하기 위한 모듈을 정의하는 단계;
    상기 문서의 페이지에 대하여, 상기 상이한 단락들 서로 간의 상대적 위치에 대해 설명하는 단락들에 대한 그래프를 생성하기 위한 모듈을 정의하는 단계; 및
    상기 생성된 그래프를 이용하여 상기 단락들을 상기 페이지의 상이한 레이아웃들에 할당하기 위한 모듈을 정의하는 단계
    를 포함하는 문서 분석 프로그램 정의 방법.
  10. 제9항에 있어서,
    상기 글리프들 간의 연관성을 생성하기 위한 모듈을 정의하는 단계는 상기 글리프들의 위치들에 대한 클러스터 분석을 수행하여 글리프들 간의 수평 간격을 식별하기 위한 모듈을 정의하는 단계를 포함하는, 문서 분석 프로그램 정의 방법.
  11. 제10항에 있어서,
    상기 클러스터 분석은 수평 간격 크기들의 클러스터들을 식별하여 워드들 간의 간격 및 워드들 내의 간격을 식별하는, 문서 분석 프로그램 정의 방법.
  12. 삭제
  13. 복수의 글리프를 포함하는 문서를 분석하기 위한 프로그램을 정의하기 위한 방법으로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 - ,
    상기 문서 내의 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하기 위한 모듈을 정의하는 단계;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 상이한 단락들로서 식별하기 위한 모듈을 정의하는 단계; 및
    상기 단락들의 읽기 순서를 정의하기 위해 인접(contiguous)하지 않은 적어도 두 개의 단락들 간의 연관성을 정의하기 위한 모듈을 정의하는 단계 - 상기 적어도 두 개의 단락들은 제1 칼럼의 맨 아래에 있는 제1 단락 및 제2 칼럼의 맨 위에 있는 제2 단락을 포함하고, 상기 읽기 순서는 상기 제1 단락으로부터 바로 상기 제2 단락으로의 흐름을 지정함 -
    를 포함하는 문서 분석 프로그램 정의 방법.
  14. 복수의 글리프를 포함하는 문서를 분석하기 위한 프로그램을 정의하기 위한 방법으로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 - ,
    상기 문서 내의 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하기 위한 모듈을 정의하는 단계;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 상이한 단락들로서 식별하기 위한 모듈을 정의하는 단계; 및
    상기 단락들의 읽기 순서를 정의하기 위해 인접(contiguous)하지 않은 적어도 두 개의 단락들 간의 연관성을 정의하기 위한 모듈을 정의하는 단계 - 상기 적어도 두 개의 단락들은 제1 페이지의 말단에 있는 제1 단락 및 제2 페이지의 시작에 있는 제2 단락을 포함하고, 상기 읽기 순서는 상기 제1 단락으로부터 바로 상기 제2 단락으로의 흐름을 지정함 -
    를 포함하는 문서 분석 프로그램 정의 방법.
  15. 제14항에 있어서, 상기 제1 페이지 및 상기 제2 페이지는 상기 문서 내에서 인접(contiguous)하지 않는 문서 분석 프로그램 정의 방법.
  16. 복수의 글리프를 포함하는 문서를 분석하는 방법으로서 - 각각의 글리프는 상기 문서 내에 위치를 가짐 - ,
    상기 문서 내의 상기 글리프들의 위치들에 기초하여, 글리프들 간의 연관성들을 생성하여 상이한 글리프들의 세트들을 상이한 워드들로서 식별하는 단계;
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 상이한 단락들로서 식별하는 단계;
    상기 문서의 페이지에 대하여, 상기 상이한 단락들 서로 간의 상대적 위치에 대해 설명하는 단락들에 대한 그래프를 생성하는 단계; 및
    상기 생성된 그래프를 이용하여 상기 단락들을 상기 페이지의 상이한 레이아웃들에 할당하는 단계
    를 포함하는 문서 분석 방법.
  17. 제16항에 있어서,
    상기 그래프를 이용하여 상기 단락들을 상기 페이지의 상이한 레이아웃들에 할당하기 이전에 상기 생성된 그래프에서 콜-아웃들(call-outs)을 식별하는 단계 - 콜-아웃들은 페이지 상의 텍스트 요소들(text elements)이고, 상기 페이지의 텍스트의 나머지 것들(the rest of the text)과는 독립적인 순서로 읽히도록 하는 것임 - 를 더 포함하는 문서 분석 방법.
  18. 제17항에 있어서, 상기 그래프를 이용하여 상기 단락들을 상기 페이지의 상이한 레이아웃들에 할당하기 이전에 상기 그래프로부터 상기 식별된 콜-아웃들을 제거하는 단계를 더 포함하는 문서 분석 방법.
  19. 제16항에 있어서, 상기 문서는 비구조화된 벡터 그래픽 문서인 문서 분석 방법.
  20. 제19항에 있어서, 워드들과 단락들 간의 연관성들에 기초하여 상기 비구조화된 벡터 그래픽 문서에 대한 구조화된 문서를 정의하는 단계를 더 포함하는 문서 분석 방법.
  21. 제1항, 제6항, 제7항 및 제8항 중 어느 한 항에 있어서,
    상기 워드들 간의 연관성들을 생성하기 위한 명령어들의 세트는, (i) 상기 워드들을 형성하는 상기 글리프들의 수직 간격 속성들 및 (ii) 상기 워드들을 형성하는 상기 글리프들의 수평 정렬 속성들에 기초하여 연관시킬 워드들의 세트를 식별하기 위한 명령어들의 세트를 포함하는 머신 판독가능 매체.
  22. 제3항, 제6항 및 제7항 중 어느 한 항에 있어서,
    워드들 간의 연관성들을 생성하여 상이한 워드들의 세트들을 텍스트 라인들로서 식별하기 위한 명령어들의 세트는,
    수평으로 정렬된 워드들의 세트를 식별하고 - 상기 세트 내의 모든 워드들은 서로의 특정 임계값 내의 기준선(baseline)들을 가짐 - ;
    적어도 하나의 수평 틈(gap)의 존재에 기초하여 수평으로 정렬된 워드들의 세트를 나누며(split);
    각각의 남아있는 세트 내의 상기 워드들 간의 연관성들을 생성하기 위한 명령어들의 세트들을 포함하는
    머신 판독가능 매체.
  23. 제22항에 있어서,
    상기 수평으로 정렬된 워드들의 세트를 나누기 위한 명령어들의 세트는,
    수평 틈들(gaps)을 수평으로 정렬된 워드들 간의 적어도 임계 폭의 틈들로서 식별하고;
    수직으로 정렬된 수평 틈들의 세트들을 식별하며;
    특정 조건 세트를 만족하지 않는 수평 틈들의 세트들을 제거하고;
    제거되지 않은 틈들에서 수평으로 정렬된 워드들의 세트를 나누기 위한 명령어들의 세트들을 포함하는
    머신 판독가능 매체.
  24. 제9항, 제13항 및 제14항 중 어느 한 항에 있어서,
    상기 식별된 워드들 및 단락들에 기초하여 구조화된 문서를 정의하기 위한 모듈을 정의하는 단계를 더 포함하는 문서 분석 프로그램 정의 방법.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
  85. 삭제
  86. 삭제
  87. 삭제
  88. 삭제
  89. 삭제
  90. 삭제
  91. 삭제
  92. 삭제
  93. 삭제
  94. 삭제
  95. 삭제
  96. 삭제
  97. 삭제
  98. 삭제
  99. 삭제
  100. 삭제
  101. 삭제
  102. 삭제
  103. 삭제
  104. 삭제
  105. 삭제
  106. 삭제
  107. 삭제
  108. 삭제
  109. 삭제
  110. 삭제
  111. 삭제
  112. 삭제
  113. 삭제
  114. 삭제
  115. 삭제
  116. 삭제
  117. 삭제
  118. 삭제
  119. 삭제
  120. 삭제
  121. 삭제
  122. 삭제
  123. 삭제
  124. 삭제
  125. 삭제
  126. 삭제
  127. 삭제
  128. 삭제
  129. 삭제
  130. 삭제
  131. 삭제
  132. 삭제
  133. 삭제
  134. 삭제
  135. 삭제
  136. 삭제
  137. 삭제
  138. 삭제
  139. 삭제
  140. 삭제
  141. 삭제
  142. 삭제
  143. 삭제
  144. 삭제
  145. 삭제
  146. 삭제
  147. 삭제
  148. 삭제
  149. 삭제
  150. 삭제
  151. 삭제
  152. 삭제
  153. 삭제
  154. 삭제
  155. 삭제
  156. 삭제
  157. 삭제
  158. 삭제
  159. 삭제
  160. 삭제
  161. 삭제
  162. 삭제
  163. 삭제
  164. 삭제
  165. 삭제
  166. 삭제
  167. 삭제
  168. 삭제
  169. 삭제
  170. 삭제
  171. 삭제
  172. 삭제
  173. 삭제
  174. 삭제
  175. 삭제
  176. 삭제
  177. 삭제
  178. 삭제
  179. 삭제
  180. 삭제
  181. 삭제
  182. 삭제
  183. 삭제
  184. 삭제
  185. 삭제
  186. 삭제
  187. 삭제
  188. 삭제
  189. 삭제
  190. 삭제
  191. 삭제
  192. 삭제
  193. 삭제
  194. 삭제
  195. 삭제
  196. 삭제
  197. 삭제
  198. 삭제
  199. 삭제
  200. 삭제
  201. 삭제
  202. 삭제
  203. 삭제
  204. 삭제
  205. 삭제
  206. 삭제
  207. 삭제
  208. 삭제
  209. 삭제
  210. 삭제
  211. 삭제
  212. 삭제
  213. 삭제
  214. 삭제
  215. 삭제
  216. 삭제
  217. 삭제
  218. 삭제
  219. 삭제
  220. 삭제
  221. 삭제
  222. 삭제
  223. 삭제
  224. 삭제
  225. 삭제
  226. 삭제
  227. 삭제
  228. 삭제
  229. 삭제
  230. 삭제
  231. 삭제
  232. 삭제
  233. 삭제
  234. 삭제
  235. 삭제
  236. 삭제
  237. 삭제
KR1020117018126A 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템 KR101324799B1 (ko)

Applications Claiming Priority (23)

Application Number Priority Date Filing Date Title
US14232909P 2009-01-02 2009-01-02
US61/142,329 2009-01-02
US12/479,842 2009-06-07
US12/479,843 US8261186B2 (en) 2009-01-02 2009-06-07 Methods for efficient cluster analysis
US12/479,844 2009-06-07
US12/479,849 US9460063B2 (en) 2009-01-02 2009-06-07 Identification, selection, and display of a region of interest in a document
US12/479,844 US8365072B2 (en) 2009-01-02 2009-06-07 Identification of compound graphic elements in an unstructured document
US12/479,845 US8352855B2 (en) 2009-01-02 2009-06-07 Selection of text in an unstructured document
US12/479,848 US8443278B2 (en) 2009-01-02 2009-06-07 Identification of tables in an unstructured document
US12/479,852 2009-06-07
US12/479,849 2009-06-07
US12/479,847 2009-06-07
US12/479,850 2009-06-07
US12/455,866 2009-06-07
US12/455,866 US9063911B2 (en) 2009-01-02 2009-06-07 Identification of layout and content flow of an unstructured document
US12/479,852 US8473467B2 (en) 2009-01-02 2009-06-07 Content profiling to dynamically configure content processing
US12/479,847 US8719701B2 (en) 2009-01-02 2009-06-07 Identification of guides and gutters of a document
US12/479,848 2009-06-07
US12/479,842 US8438472B2 (en) 2009-01-02 2009-06-07 Efficient data structures for parsing and analyzing a document
US12/479,845 2009-06-07
US12/479,850 US8832549B2 (en) 2009-01-02 2009-06-07 Identification of regions of a document
US12/479,843 2009-06-07
PCT/US2009/069885 WO2010078475A2 (en) 2009-01-02 2009-12-31 Methods and system for document reconstruction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020137010411A Division KR101463703B1 (ko) 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20110112397A KR20110112397A (ko) 2011-10-12
KR101324799B1 true KR101324799B1 (ko) 2013-11-01

Family

ID=42312368

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020137025900A KR20130116958A (ko) 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템
KR1020137010411A KR101463703B1 (ko) 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템
KR1020117018126A KR101324799B1 (ko) 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020137025900A KR20130116958A (ko) 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템
KR1020137010411A KR101463703B1 (ko) 2009-01-02 2009-12-31 문서 재구조화를 위한 방법 및 시스템

Country Status (7)

Country Link
US (14) US8719701B2 (ko)
EP (1) EP2374067A2 (ko)
JP (2) JP2012514792A (ko)
KR (3) KR20130116958A (ko)
DE (1) DE112009004951T5 (ko)
GB (2) GB2498137A (ko)
WO (1) WO2010078475A2 (ko)

Families Citing this family (271)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7760187B2 (en) 2004-07-30 2010-07-20 Apple Inc. Visual expander
US20040205568A1 (en) * 2002-03-01 2004-10-14 Breuel Thomas M. Method and system for document image layout deconstruction and redisplay system
US7676744B2 (en) * 2005-08-19 2010-03-09 Vistaprint Technologies Limited Automated markup language layout
US7856605B2 (en) 2006-10-26 2010-12-21 Apple Inc. Method, system, and graphical user interface for positioning an insertion marker in a touch screen display
US8570278B2 (en) 2006-10-26 2013-10-29 Apple Inc. Portable multifunction device, method, and graphical user interface for adjusting an insertion point marker
US8763038B2 (en) * 2009-01-26 2014-06-24 Sony Corporation Capture of stylized TV table data via OCR
US8316358B2 (en) * 2007-05-31 2012-11-20 Research In Motion Limited Method and apparatus for processing XML for display on a mobile device
US8788523B2 (en) * 2008-01-15 2014-07-22 Thomson Reuters Global Resources Systems, methods and software for processing phrases and clauses in legal documents
US8201109B2 (en) 2008-03-04 2012-06-12 Apple Inc. Methods and graphical user interfaces for editing on a portable multifunction device
US8650507B2 (en) 2008-03-04 2014-02-11 Apple Inc. Selecting of text using gestures
WO2009146039A1 (en) * 2008-03-31 2009-12-03 Thomson Reuters Global Resources Systems and methods for tables of contents
US9639531B2 (en) 2008-04-09 2017-05-02 The Nielsen Company (Us), Llc Methods and apparatus to play and control playing of media in a web page
JP5132416B2 (ja) * 2008-05-08 2013-01-30 キヤノン株式会社 画像処理装置およびその制御方法
JP5377481B2 (ja) * 2008-06-18 2013-12-25 株式会社アテナテレコムラボ テーブルの表示と操作のプログラム
US8719701B2 (en) 2009-01-02 2014-05-06 Apple Inc. Identification of guides and gutters of a document
US8661362B2 (en) 2009-03-16 2014-02-25 Apple Inc. Methods and graphical user interfaces for editing on a multifunction device with a touch screen display
CN102439586A (zh) * 2009-04-14 2012-05-02 自由科学有限公司 文档导航方法
US20110029904A1 (en) * 2009-07-30 2011-02-03 Adam Miles Smith Behavior and Appearance of Touch-Optimized User Interface Elements for Controlling Computer Function
US8656314B2 (en) * 2009-07-30 2014-02-18 Lenovo (Singapore) Pte. Ltd. Finger touch gesture for joining and unjoining discrete touch objects
KR101622196B1 (ko) * 2009-09-07 2016-05-18 삼성전자주식회사 휴대용 단말기에서 피오아이 정보 제공 방법 및 장치
US10552710B2 (en) 2009-09-28 2020-02-04 Oracle International Corporation Hierarchical sequential clustering
US10013641B2 (en) * 2009-09-28 2018-07-03 Oracle International Corporation Interactive dendrogram controls
US20110099498A1 (en) * 2009-10-26 2011-04-28 Barkol Omer Graphical user interface hierarchy generation
CN101707532B (zh) * 2009-10-30 2012-08-15 中山大学 一种未知应用层协议自动分析方法
US8922582B2 (en) * 2009-11-16 2014-12-30 Martin J. Murrett Text rendering and display using composite bitmap images
KR101032446B1 (ko) * 2009-11-26 2011-05-03 광주과학기술원 영상의 정점 검출 장치 및 방법
US8508811B2 (en) * 2009-12-14 2013-08-13 Samsung Electronics Co., Ltd. Image forming apparatus and method of copying two-sided card thereof
US8577887B2 (en) * 2009-12-16 2013-11-05 Hewlett-Packard Development Company, L.P. Content grouping systems and methods
US20110179350A1 (en) * 2010-01-15 2011-07-21 Apple Inc. Automatically placing an anchor for an object in a document
US9135223B2 (en) * 2010-01-15 2015-09-15 Apple Inc. Automatically configuring white space around an object in a document
US20110179345A1 (en) * 2010-01-15 2011-07-21 Apple Inc. Automatically wrapping text in a document
US8756231B2 (en) * 2010-01-28 2014-06-17 International Business Machines Corporation Search using proximity for clustering information
JP5440222B2 (ja) * 2010-02-03 2014-03-12 富士ゼロックス株式会社 情報処理装置及びプログラム
US20110219294A1 (en) * 2010-03-04 2011-09-08 Skiff, Inc. System And Method For Automatic Continuation Marks In An Electronic Publication
US8473842B2 (en) 2010-05-12 2013-06-25 Microsoft Corporation Contour based flow layout
US8434001B2 (en) 2010-06-03 2013-04-30 Rhonda Enterprises, Llc Systems and methods for presenting a content summary of a media item to a user based on a position within the media item
WO2012015406A1 (en) * 2010-07-29 2012-02-02 Hewlett-Packard Development Company, L.P. Inserting content and exclusion zone(s) into a page
US9326116B2 (en) 2010-08-24 2016-04-26 Rhonda Enterprises, Llc Systems and methods for suggesting a pause position within electronic text
US9218680B2 (en) * 2010-09-01 2015-12-22 K-Nfb Reading Technology, Inc. Systems and methods for rendering graphical content and glyphs
US8566702B2 (en) * 2010-09-20 2013-10-22 Blackberry Limited Methods and systems of outputting content of interest
US8661335B2 (en) * 2010-09-20 2014-02-25 Blackberry Limited Methods and systems for identifying content elements
US9069754B2 (en) 2010-09-29 2015-06-30 Rhonda Enterprises, Llc Method, system, and computer readable medium for detecting related subgroups of text in an electronic document
US20130205195A1 (en) * 2010-10-19 2013-08-08 Mohamed Dekhil Managing Content from Structured and Unstructured Data Sources
US20120096344A1 (en) * 2010-10-19 2012-04-19 Google Inc. Rendering or resizing of text and images for display on mobile / small screen devices
US20120102394A1 (en) * 2010-10-25 2012-04-26 Konica Minolta Systems Laboratory Inc. Application of path-fill algorithm to text layout around objects
US9697180B2 (en) * 2010-10-25 2017-07-04 Konica Minolta Laboratory U.S.A., Inc. System and method for text layout using a path-fill algorithm
US20130205202A1 (en) * 2010-10-26 2013-08-08 Jun Xiao Transformation of a Document into Interactive Media Content
JP5444187B2 (ja) * 2010-10-26 2014-03-19 富士フイルム株式会社 携帯型表示装置ならびにその動作制御方法およびそのプログラム
US9576068B2 (en) * 2010-10-26 2017-02-21 Good Technology Holdings Limited Displaying selected portions of data sets on display devices
US20120101980A1 (en) * 2010-10-26 2012-04-26 Microsoft Corporation Synchronizing online document edits
US8687004B2 (en) * 2010-11-01 2014-04-01 Apple Inc. Font file with graphic images
US9349130B2 (en) 2010-11-17 2016-05-24 Eloqua, Inc. Generating relative and absolute positioned resources using a single editor having a single syntax
US9251123B2 (en) * 2010-11-29 2016-02-02 Hewlett-Packard Development Company, L.P. Systems and methods for converting a PDF file
US8938685B2 (en) * 2010-12-31 2015-01-20 Verizon Patent And Licensing Inc. Automated graphical user interface design and development systems and methods
EP2477122B1 (en) 2011-01-18 2018-10-24 Apple Inc. Ordering document content
US8442998B2 (en) 2011-01-18 2013-05-14 Apple Inc. Storage of a document using multiple representations
US8543911B2 (en) * 2011-01-18 2013-09-24 Apple Inc. Ordering document content based on reading flow
US8380753B2 (en) 2011-01-18 2013-02-19 Apple Inc. Reconstruction of lists in a document
US9111327B2 (en) 2011-01-18 2015-08-18 Apple Inc. Transforming graphic objects
US8615511B2 (en) * 2011-01-22 2013-12-24 Operational Transparency LLC Data visualization interface
US9170825B2 (en) * 2011-04-21 2015-10-27 Oracle International Corporation Interface method resolution for virtual extension methods
US9069459B2 (en) * 2011-05-03 2015-06-30 Microsoft Technology Licensing, Llc Multi-threaded conditional processing of user interactions for gesture processing using rendering thread or gesture processing thread based on threshold latency
JP5843474B2 (ja) * 2011-05-09 2016-01-13 キヤノン株式会社 画像処理装置、画像処理方法、及び、プログラム
JP5801598B2 (ja) * 2011-05-09 2015-10-28 キヤノン株式会社 画像処理装置、画像処理方法、及び、プログラム
US9092130B2 (en) 2011-05-31 2015-07-28 Apple Inc. Devices, methods, and graphical user interfaces for document manipulation
US8560937B2 (en) * 2011-06-07 2013-10-15 Xerox Corporation Generate-and-test method for column segmentation
US8645819B2 (en) * 2011-06-17 2014-02-04 Xerox Corporation Detection and extraction of elements constituting images in unstructured document files
AU2012281151B2 (en) 2011-07-11 2017-08-10 Paper Software LLC System and method for searching a document
WO2013009898A1 (en) 2011-07-11 2013-01-17 Paper Software LLC System and method for processing document
AU2012282688B2 (en) 2011-07-11 2017-08-17 Paper Software LLC System and method for processing document
WO2013009904A1 (en) * 2011-07-11 2013-01-17 Paper Software LLC System and method for processing document
US9026519B2 (en) * 2011-08-09 2015-05-05 Microsoft Technology Licensing, Llc Clustering web pages on a search engine results page
US9477650B2 (en) * 2011-08-30 2016-10-25 Microsoft Technology Licensing, Llc Underlying grid structure and animation of tables
US20130067366A1 (en) * 2011-09-14 2013-03-14 Microsoft Corporation Establishing content navigation direction based on directional user gestures
US9411784B2 (en) * 2011-11-22 2016-08-09 Adobe Systems Incorporated Method and computer readable medium for controlling pagination of dynamic-length presentations
JP5862260B2 (ja) * 2011-12-09 2016-02-16 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9734132B1 (en) * 2011-12-20 2017-08-15 Amazon Technologies, Inc. Alignment and reflow of displayed character images
US9098471B2 (en) * 2011-12-29 2015-08-04 Chegg, Inc. Document content reconstruction
US10025979B2 (en) * 2012-01-23 2018-07-17 Microsoft Technology Licensing, Llc Paragraph property detection and style reconstruction engine
JP5952428B2 (ja) 2012-01-23 2016-07-13 マイクロソフト コーポレーション ボーダレステーブル検出エンジン
WO2013110285A1 (en) 2012-01-23 2013-08-01 Microsoft Corporation Formula detection engine
US20130191732A1 (en) * 2012-01-23 2013-07-25 Microsoft Corporation Fixed Format Document Conversion Engine
CN104067293B (zh) 2012-01-23 2017-07-25 微软技术许可有限责任公司 矢量图分类引擎
US8499263B1 (en) * 2012-03-29 2013-07-30 Mentor Graphics Corporation Encrypted profiles for parasitic extraction
US9292192B2 (en) 2012-04-30 2016-03-22 Blackberry Limited Method and apparatus for text selection
US20130311359A1 (en) * 2012-05-21 2013-11-21 Ofer ZINGER Triple-click activation of a monetizing action
US20130321867A1 (en) * 2012-05-31 2013-12-05 Xerox Corporation Typographical block generation
US9323726B1 (en) * 2012-06-27 2016-04-26 Amazon Technologies, Inc. Optimizing a glyph-based file
US9946690B2 (en) 2012-07-06 2018-04-17 Microsoft Technology Licensing, Llc Paragraph alignment detection and region-based section reconstruction
US9164673B2 (en) * 2012-07-16 2015-10-20 Microsoft Technology Licensing, Llc Location-dependent drag and drop UI
US9595298B2 (en) 2012-07-18 2017-03-14 Microsoft Technology Licensing, Llc Transforming data to create layouts
US9336302B1 (en) 2012-07-20 2016-05-10 Zuci Realty Llc Insight and algorithmic clustering for automated synthesis
US9558173B2 (en) * 2012-08-03 2017-01-31 Google Inc. Method for creating a document model from discontinuous selections of an existing document
US9785336B2 (en) 2012-08-17 2017-10-10 Sas Institute Inc. Macro-enabled, verbally accessible graphical data visualizations for visually impaired users
JP5783972B2 (ja) * 2012-08-17 2015-09-24 株式会社東芝 手書き文書処理装置、方法およびプログラム
CN105190596B (zh) * 2012-09-07 2018-03-27 美国化学协会 自动组成评估器
US11468243B2 (en) * 2012-09-24 2022-10-11 Amazon Technologies, Inc. Identity-based display of text
US10013488B1 (en) * 2012-09-26 2018-07-03 Amazon Technologies, Inc. Document analysis for region classification
US9436588B2 (en) 2012-09-28 2016-09-06 Identify Software Ltd. (IL) Efficient method data recording
KR102084176B1 (ko) * 2012-10-10 2020-03-04 삼성전자주식회사 휴대용 장치 및 이의 영상 표시 방법
US9170714B2 (en) * 2012-10-31 2015-10-27 Google Technology Holdings LLC Mixed type text extraction and distribution
US20140164911A1 (en) * 2012-12-11 2014-06-12 Microsoft Corporation Preserving layout of region of content during modification
US9477382B2 (en) * 2012-12-14 2016-10-25 Barnes & Noble College Booksellers, Inc. Multi-page content selection technique
US9953008B2 (en) 2013-01-18 2018-04-24 Microsoft Technology Licensing, Llc Grouping fixed format document elements to preserve graphical data semantics after reflow by manipulating a bounding box vertically and horizontally
US9008425B2 (en) * 2013-01-29 2015-04-14 Xerox Corporation Detection of numbered captions
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
US9223756B2 (en) * 2013-03-13 2015-12-29 Adobe Systems Incorporated Method and apparatus for identifying logical blocks of text in a document
US8972425B2 (en) * 2013-03-13 2015-03-03 Palo Alto Research Center Incorporated Efficient globally optimal interpretation of documents
US9208257B2 (en) * 2013-03-15 2015-12-08 Oracle International Corporation Partitioning a graph by iteratively excluding edges
US9588675B2 (en) 2013-03-15 2017-03-07 Google Inc. Document scale and position optimization
US20140281980A1 (en) 2013-03-15 2014-09-18 Chad A. Hage Methods and Apparatus to Identify a Type of Media Presented by a Media Player
US10262030B1 (en) * 2013-04-22 2019-04-16 Domo, Inc. Automatic dynamic reusable data recipes
CN104142961B (zh) * 2013-05-10 2017-08-25 北大方正集团有限公司 版式文档中复合图的逻辑处理装置和逻辑处理方法
US20160371238A1 (en) * 2013-07-09 2016-12-22 Blueprint Sofware Systems Inc, Computing device and method for converting unstructured data to structured data
US9424337B2 (en) 2013-07-09 2016-08-23 Sas Institute Inc. Number of clusters estimation
US9495347B2 (en) 2013-07-16 2016-11-15 Recommind, Inc. Systems and methods for extracting table information from documents
CN104331391B (zh) * 2013-07-22 2018-02-02 北大方正集团有限公司 文档格式转换装置和文档格式转换方法
US20150039637A1 (en) * 2013-07-31 2015-02-05 The Nielsen Company (Us), Llc Systems Apparatus and Methods for Determining Computer Apparatus Usage Via Processed Visual Indicia
CN104346615B (zh) * 2013-08-08 2019-02-19 北大方正集团有限公司 版式文档中复合图的提取装置和提取方法
JP2015035150A (ja) * 2013-08-09 2015-02-19 株式会社東芝 手書き文書処理装置、手書き文書処理方法及び手書き文書処理プログラム
US9576071B2 (en) * 2013-09-12 2017-02-21 Dropbox, Inc. Graph-based data models for partitioned data
CA2923580C (en) * 2013-09-12 2021-10-12 Wix.Com Ltd. System and method for automated conversion of interactive sites and applications to support mobile and other display environments
KR102245706B1 (ko) * 2013-09-17 2021-04-28 삼성전자주식회사 데이터 처리 방법 및 그 전자 장치
CN104462048B (zh) * 2013-09-18 2017-10-27 北大方正集团有限公司 表格排版方法和装置
US9740995B2 (en) 2013-10-28 2017-08-22 Morningstar, Inc. Coordinate-based document processing and data entry system and method
US9542391B1 (en) 2013-11-11 2017-01-10 Amazon Technologies, Inc. Processing service requests for non-transactional databases
US11336648B2 (en) 2013-11-11 2022-05-17 Amazon Technologies, Inc. Document management and collaboration system
US10599753B1 (en) 2013-11-11 2020-03-24 Amazon Technologies, Inc. Document version control in collaborative environment
US10540404B1 (en) 2014-02-07 2020-01-21 Amazon Technologies, Inc. Forming a document collection in a document management and collaboration system
US10114800B1 (en) * 2013-12-05 2018-10-30 Intuit Inc. Layout reconstruction using spatial and grammatical constraints
US10691877B1 (en) 2014-02-07 2020-06-23 Amazon Technologies, Inc. Homogenous insertion of interactions into documents
US9202178B2 (en) 2014-03-11 2015-12-01 Sas Institute Inc. Computerized cluster analysis framework for decorrelated cluster identification in datasets
US9355313B2 (en) 2014-03-11 2016-05-31 Microsoft Technology Licensing, Llc Detecting and extracting image document components to create flow document
US9251139B2 (en) * 2014-04-08 2016-02-02 TitleFlow LLC Natural language processing for extracting conveyance graphs
US20150293752A1 (en) * 2014-04-11 2015-10-15 Pradeep Varma Unrestricted, Fully-Source-Preserving, Concurrent, Wait-Free, Synchronization-Free, Fully-Error-Handling Frontend With Inline Schedule Of Tasks And Constant-Space Buffers
US10331764B2 (en) * 2014-05-05 2019-06-25 Hired, Inc. Methods and system for automatically obtaining information from a resume to update an online profile
JP2015215853A (ja) * 2014-05-13 2015-12-03 株式会社リコー システム、画像処理装置、画像処理方法およびプログラム
BE1021412B1 (nl) * 2014-06-16 2015-11-18 Itext Group Nv Computer-geïmplementeerde werkwijze, systeem en computerprogrammaproduct voor het structureren van een ongestructureerd pdf-document
US20160019192A1 (en) * 2014-07-21 2016-01-21 General Electric Company System and method to extract structured semantic model from document
JP6528927B2 (ja) * 2014-08-20 2019-06-12 富士ゼロックス株式会社 文書処理装置及びプログラム
USD760295S1 (en) * 2014-09-24 2016-06-28 Lexmark International, Inc. Portion of a display screen with icon
US9807073B1 (en) 2014-09-29 2017-10-31 Amazon Technologies, Inc. Access to documents in a document management and collaboration system
US10282069B2 (en) 2014-09-30 2019-05-07 Microsoft Technology Licensing, Llc Dynamic presentation of suggested content
US20160092404A1 (en) * 2014-09-30 2016-03-31 Microsoft Technology Licensing, Llc Intent Based Feedback
US20160110599A1 (en) * 2014-10-20 2016-04-21 Lexmark International Technology, SA Document Classification with Prominent Objects
CN104461348B (zh) * 2014-10-31 2018-09-04 小米科技有限责任公司 信息选取方法及装置
US10423706B2 (en) 2014-10-31 2019-09-24 Xiaomi Inc. Method and device for selecting information
US20160139783A1 (en) * 2014-11-13 2016-05-19 Microsoft Technology Licensing, Llc Detecting sidebar in document
US9715748B2 (en) * 2014-12-04 2017-07-25 The United States Of America As Represented By The Secretary Of The Air Force Method and apparatus for graphical data interaction and vizualization of graphs via paths
WO2016122556A1 (en) * 2015-01-30 2016-08-04 Hewlett-Packard Development Company, L.P. Identification of a breakpoint based on a correlation measurement
US10891323B1 (en) * 2015-02-10 2021-01-12 West Corporation Processing and delivery of private electronic documents
US10671235B2 (en) 2015-03-03 2020-06-02 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
US9886426B1 (en) * 2015-03-26 2018-02-06 Accusoft Corporation Methods and apparatus for generating an efficient SVG file
US10387563B2 (en) * 2015-03-30 2019-08-20 International Business Machines Corporation Parallel parsing of markup language data
US10719220B2 (en) * 2015-03-31 2020-07-21 Autodesk, Inc. Dynamic scrolling
RU2610585C2 (ru) * 2015-03-31 2017-02-13 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для модификации текста в документе
USD779523S1 (en) * 2015-04-06 2017-02-21 Domo, Inc. Display screen or portion thereof with a graphical user interface for analytics
US10691323B2 (en) 2015-04-10 2020-06-23 Apple Inc. Column fit document traversal for reader application
CN104834701B (zh) * 2015-04-28 2019-03-26 成都品果科技有限公司 基于ios系统的智能搜索结果显示方法
US20160321226A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Insertion of unsaved content via content channel
US9805025B2 (en) * 2015-07-13 2017-10-31 Seal Software Limited Standard exact clause detection
US9811505B2 (en) * 2015-07-20 2017-11-07 Sas Institute Inc. Techniques to provide processing enhancements for a text editor in a computing environment
US10353986B2 (en) * 2015-08-02 2019-07-16 Apple Inc. Automatically dividing text into multiple columns
US10191970B2 (en) 2015-08-19 2019-01-29 International Business Machines Corporation Systems and methods for customized data parsing and paraphrasing
US10572579B2 (en) 2015-08-21 2020-02-25 International Business Machines Corporation Estimation of document structure
US9552527B1 (en) * 2015-08-27 2017-01-24 Lead Technologies, Inc. Apparatus, method, and computer-readable storage medium for determining a rotation angle of text
US9881003B2 (en) * 2015-09-23 2018-01-30 Google Llc Automatic translation of digital graphic novels
US9621761B1 (en) 2015-10-08 2017-04-11 International Business Machines Corporation Automatic correction of skewing of digital images
US20170132484A1 (en) * 2015-11-05 2017-05-11 Christopher D. Malon Two Step Mathematical Expression Search
CN105302626B (zh) * 2015-11-09 2021-07-23 深圳市巨鼎医疗股份有限公司 Xps结构化数据的解析方法
US20170220858A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Optical recognition of tables
JP2017167433A (ja) * 2016-03-17 2017-09-21 株式会社東芝 サマリ生成装置、サマリ生成方法及びサマリ生成プログラム
CN107368465B (zh) * 2016-05-13 2020-03-03 北京京东尚科信息技术有限公司 一种用于流式文档的截图类笔记处理的系统及方法
CN107436895B (zh) * 2016-05-26 2020-12-04 中国移动通信集团云南有限公司 一种非结构化数据识别的方法和装置
US11144777B2 (en) * 2016-06-30 2021-10-12 Rakuten Group, Inc. Image processing apparatus, image processing method, and image processing program for clipping images included in a large image
US10628519B2 (en) 2016-07-22 2020-04-21 Dropbox, Inc. Enhancing documents portrayed in digital images
KR101931859B1 (ko) * 2016-09-29 2018-12-21 (주)시지온 전자문서의 대표 단어 선정 방법, 전자 문서 제공 방법, 및 이를 수행하는 컴퓨팅 시스템
CN106649230B (zh) * 2016-09-30 2019-07-26 株洲中车时代电气股份有限公司 一种列车网络控制系统逻辑图的图形自动生成方法
CN106648332A (zh) * 2016-11-16 2017-05-10 惠州Tcl移动通信有限公司 一种智能终端快速选择的方法和系统
US11205103B2 (en) 2016-12-09 2021-12-21 The Research Foundation for the State University Semisupervised autoencoder for sentiment analysis
US11157855B2 (en) * 2017-01-09 2021-10-26 Sutherland Global Services Inc. Robotics process automation platform
KR101890831B1 (ko) * 2017-01-11 2018-09-28 주식회사 펍플 전자책 서비스 제공방법 및 그를 위한 컴퓨터 프로그램
US10319129B2 (en) * 2017-01-27 2019-06-11 Adobe Inc. Snapping line generation
US10191979B2 (en) 2017-02-20 2019-01-29 Sas Institute Inc. Converting graphical data-visualizations into sonified output
CN108694208A (zh) * 2017-04-11 2018-10-23 富士通株式会社 用于构造数据库的方法和装置
US10223585B2 (en) 2017-05-08 2019-03-05 Adobe Systems Incorporated Page segmentation of vector graphics documents
US10489502B2 (en) 2017-06-30 2019-11-26 Accenture Global Solutions Limited Document processing
US11003796B2 (en) 2017-06-30 2021-05-11 Accenture Global Solutions Limited Artificial intelligence based document processor
US11562143B2 (en) 2017-06-30 2023-01-24 Accenture Global Solutions Limited Artificial intelligence (AI) based document processor
GB2567407B (en) * 2017-07-31 2022-03-30 Sage Uk Ltd Method and apparatus for determining layout
US10339212B2 (en) * 2017-08-14 2019-07-02 Adobe Inc. Detecting the bounds of borderless tables in fixed-format structured documents using machine learning
US10417516B2 (en) * 2017-08-24 2019-09-17 Vastec, Inc. System and method for preprocessing images to improve OCR efficacy
WO2019077405A1 (en) * 2017-10-17 2019-04-25 Handycontract, LLC METHOD, DEVICE AND SYSTEM FOR IDENTIFYING DATA ELEMENTS IN DATA STRUCTURES
US11475209B2 (en) 2017-10-17 2022-10-18 Handycontract Llc Device, system, and method for extracting named entities from sectioned documents
KR101980977B1 (ko) * 2017-11-23 2019-05-21 성균관대학교산학협력단 다중 사용자 환경에서 사용자 기반 어플리케이션 그룹핑 방법 및 이를 수행하는 테이블탑 디스플레이 장치
AU2017279613A1 (en) 2017-12-19 2019-07-04 Canon Kabushiki Kaisha Method, system and apparatus for processing a page of a document
FI20176151A1 (en) 2017-12-22 2019-06-23 Vuolearning Ltd A heuristic method for analyzing the contents of an electronic document
US10579707B2 (en) * 2017-12-29 2020-03-03 Konica Minolta Laboratory U.S.A., Inc. Method for inferring blocks of text in electronic documents
KR102462516B1 (ko) 2018-01-09 2022-11-03 삼성전자주식회사 디스플레이 장치 및 이의 컨텐츠 제공 방법
US10296578B1 (en) 2018-02-20 2019-05-21 Paycor, Inc. Intelligent extraction and organization of data from unstructured documents
US11650970B2 (en) 2018-03-09 2023-05-16 International Business Machines Corporation Extracting structure and semantics from tabular data
US10762142B2 (en) 2018-03-16 2020-09-01 Open Text Holdings, Inc. User-defined automated document feature extraction and optimization
US11048762B2 (en) 2018-03-16 2021-06-29 Open Text Holdings, Inc. User-defined automated document feature modeling, extraction and optimization
CN108446264B (zh) * 2018-03-26 2022-02-15 阿博茨德(北京)科技有限公司 Pdf文档中的表格矢量解析方法及装置
CN108470021B (zh) * 2018-03-26 2022-06-03 阿博茨德(北京)科技有限公司 Pdf文档中表格的定位方法及装置
US11112927B2 (en) * 2018-04-25 2021-09-07 Adobe Inc. Digital content automated layout system
US11062135B1 (en) * 2018-05-17 2021-07-13 Amdocs Development Limited System, method, and computer program for determining and marking on a document what may be of interest to a user
US11004350B2 (en) * 2018-05-29 2021-05-11 Walmart Apollo, Llc Computerized training video system
US10936864B2 (en) * 2018-06-11 2021-03-02 Adobe Inc. Grid layout determination from a document image
US10685261B2 (en) * 2018-06-11 2020-06-16 GM Global Technology Operations LLC Active segmention of scanned images based on deep reinforcement learning for OCR applications
US11200413B2 (en) 2018-07-31 2021-12-14 International Business Machines Corporation Table recognition in portable document format documents
US11182542B2 (en) * 2018-10-29 2021-11-23 Microsoft Technology Licensing, Llc Exposing annotations in a document
US11232132B2 (en) * 2018-11-30 2022-01-25 Wipro Limited Method, device, and system for clustering document objects based on information content
US11238215B2 (en) 2018-12-04 2022-02-01 Issuu, Inc. Systems and methods for generating social assets from electronic publications
US11450125B2 (en) * 2018-12-04 2022-09-20 Leverton Holding Llc Methods and systems for automated table detection within documents
US10824899B2 (en) 2018-12-27 2020-11-03 Microsoft Technology Licensing, Llc Structural clustering and alignment of OCR results
US11610277B2 (en) 2019-01-25 2023-03-21 Open Text Holdings, Inc. Seamless electronic discovery system with an enterprise data portal
US10984173B2 (en) * 2019-02-26 2021-04-20 Adobe Inc. Vector-based glyph style transfer
US11176310B2 (en) * 2019-04-01 2021-11-16 Adobe Inc. Facilitating dynamic document layout by determining reading order using document content stream cues
US10614345B1 (en) 2019-04-12 2020-04-07 Ernst & Young U.S. Llp Machine learning based extraction of partition objects from electronic documents
WO2020236997A1 (en) * 2019-05-21 2020-11-26 Schlumberger Technology Corporation Process for highlighting text with varied orientation
US11113518B2 (en) 2019-06-28 2021-09-07 Eygs Llp Apparatus and methods for extracting data from lineless tables using Delaunay triangulation and excess edge removal
CN112287654A (zh) * 2019-07-25 2021-01-29 珠海金山办公软件有限公司 一种文档元素对齐方法及装置
US11915465B2 (en) 2019-08-21 2024-02-27 Eygs Llp Apparatus and methods for converting lineless tables into lined tables using generative adversarial networks
KR102244974B1 (ko) * 2019-08-22 2021-04-27 주식회사 심플랩 전자문서를 생성하는 서버 및 그 방법
US10740403B1 (en) 2019-08-23 2020-08-11 Capital One Services Llc Systems and methods for identifying ordered sequence data
US11270065B2 (en) 2019-09-09 2022-03-08 International Business Machines Corporation Extracting attributes from embedded table structures
CN114616572A (zh) 2019-09-16 2022-06-10 多库加米公司 跨文档智能写作和处理助手
KR102287149B1 (ko) * 2019-09-19 2021-08-06 주식회사 한글과컴퓨터 Pdf 문서에서 텍스트 라인 정보를 기초로 단락의 구분선을 표시하는 전자 장치 및 그 동작 방법
US11380116B2 (en) 2019-10-22 2022-07-05 International Business Machines Corporation Automatic delineation and extraction of tabular data using machine learning
RU2737720C1 (ru) * 2019-11-20 2020-12-02 Общество с ограниченной ответственностью "Аби Продакшн" Извлечение полей с помощью нейронных сетей без использования шаблонов
US10810709B1 (en) 2019-11-21 2020-10-20 Eygs Llp Systems and methods for improving the quality of text documents using artificial intelligence
CN110968667B (zh) * 2019-11-27 2023-04-18 广西大学 一种基于文本状态特征的期刊文献表格抽取方法
CN111008657A (zh) * 2019-11-29 2020-04-14 广州大学 一种街道环境多维度失序的空间分布识别方法
US11657101B2 (en) * 2020-01-13 2023-05-23 Goldman Sachs & Co. LLC Document information extraction system using sequenced comparators
CA3105227C (en) * 2020-01-14 2023-06-27 Landmark Graphics Corporation Techniques for extraction of vectorized content of an oil and gas play within an unstructured file
US11409416B2 (en) * 2020-01-31 2022-08-09 Salesforce, Inc. Custom user interface generation for completing a predicted task
US11625934B2 (en) 2020-02-04 2023-04-11 Eygs Llp Machine learning based end-to-end extraction of tables from electronic documents
US11423042B2 (en) 2020-02-07 2022-08-23 International Business Machines Corporation Extracting information from unstructured documents using natural language processing and conversion of unstructured documents into structured documents
US11392753B2 (en) * 2020-02-07 2022-07-19 International Business Machines Corporation Navigating unstructured documents using structured documents including information extracted from unstructured documents
US11675970B2 (en) * 2020-02-14 2023-06-13 Open Text Corporation Machine learning systems and methods for automatically tagging documents to enable accessibility to impaired individuals
US11734576B2 (en) 2020-04-14 2023-08-22 International Business Machines Corporation Cooperative neural networks with spatial containment constraints
US11222201B2 (en) 2020-04-14 2022-01-11 International Business Machines Corporation Vision-based cell structure recognition using hierarchical neural networks
US11194953B1 (en) * 2020-04-29 2021-12-07 Indico Graphical user interface systems for generating hierarchical data extraction training dataset
US10970458B1 (en) * 2020-06-25 2021-04-06 Adobe Inc. Logical grouping of exported text blocks
US11176311B1 (en) * 2020-07-09 2021-11-16 International Business Machines Corporation Enhanced section detection using a combination of object detection with heuristics
US11367296B2 (en) * 2020-07-13 2022-06-21 NextVPU (Shanghai) Co., Ltd. Layout analysis
US11514697B2 (en) * 2020-07-15 2022-11-29 Oracle International Corporation Probabilistic text index for semi-structured data in columnar analytics storage formats
CN112001183B (zh) * 2020-07-26 2021-11-19 湖南省侍禾教育科技有限公司 一种基于段落语义的中小学试题分割提取方法及系统
US11514699B2 (en) * 2020-07-30 2022-11-29 International Business Machines Corporation Text block recognition based on discrete character recognition and text information connectivity
US11010543B1 (en) 2020-08-11 2021-05-18 Fmr Llc Systems and methods for table extraction in documents
CN112070142A (zh) * 2020-09-02 2020-12-11 平安科技(深圳)有限公司 车辆配件的分组方法、装置、电子设备及存储介质
KR102442510B1 (ko) * 2020-10-13 2022-09-13 주식회사 한글과컴퓨터 문서에 대한 저장 파일 형식을 자동으로 지정하는 문서 편집 장치 및 그 동작 방법
JP7283836B2 (ja) * 2020-11-02 2023-05-30 之江実験室 マルチタスク言語モデル向けのメタ知識微調整方法及びプラットフォーム
US11688193B2 (en) 2020-11-13 2023-06-27 International Business Machines Corporation Interactive structure annotation with artificial intelligence
US11416671B2 (en) * 2020-11-16 2022-08-16 Issuu, Inc. Device dependent rendering of PDF content
US11030387B1 (en) 2020-11-16 2021-06-08 Issuu, Inc. Device dependent rendering of PDF content including multiple articles and a table of contents
US11798210B2 (en) 2020-12-09 2023-10-24 Salesforce, Inc. Neural network based detection of image space suitable for overlaying media content
US11681734B2 (en) * 2020-12-09 2023-06-20 International Business Machines Corporation Organizing fragments of meaningful text
JP2022092837A (ja) * 2020-12-11 2022-06-23 株式会社東海理化電機製作所 制御装置およびプログラム
US11657511B2 (en) * 2021-01-29 2023-05-23 Salesforce, Inc. Heuristics-based detection of image space suitable for overlaying media content
US11880425B2 (en) * 2021-04-02 2024-01-23 Content Square SAS System and method for identifying and correcting webpage zone target misidentifications
US20220335240A1 (en) * 2021-04-15 2022-10-20 Microsoft Technology Licensing, Llc Inferring Structure Information from Table Images
DE102021109522A1 (de) 2021-04-15 2022-10-20 J. Schlottmann - Net e. Kfm. Grafische Benutzeroberflächen
CN113343815B (zh) * 2021-05-31 2022-06-07 北森云计算有限公司 一种pdf等版式文档中识别表格的方法
US20230229850A1 (en) * 2022-01-14 2023-07-20 Microsoft Technology Licensing, Llc Smart tabular paste from a clipboard buffer
US20230282013A1 (en) * 2022-03-02 2023-09-07 Alteryx, Inc. Automated key-value pair extraction
US11960818B2 (en) * 2022-08-23 2024-04-16 Adobe Inc. Automatic detection and removal of typographic rivers in electronic documents
US11837004B1 (en) * 2023-02-24 2023-12-05 Oracle Financial Services Software Limited Searchable table extraction
KR102563900B1 (ko) * 2023-03-31 2023-08-09 (주) 바우디움 구조화 문서를 취급하는 방법 및 이를 이용한 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090104071A (ko) * 2007-06-29 2009-10-05 캐논 가부시끼가이샤 화상 처리 장치, 화상 처리 방법 및 기억 매체
KR20100033412A (ko) * 2007-06-29 2010-03-29 캐논 가부시끼가이샤 화상 처리 장치, 화상 처리 방법 및 컴퓨터 판독 가능 저장 매체

Family Cites Families (241)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US17941A (en) * 1857-08-04 Machine for forging nails
US61384A (en) * 1867-01-22 Improved edge plane foe boots and shoes
US284780A (en) * 1883-09-11 Island
US76295A (en) * 1868-04-07 Improvement in piston-packing
US38927A (en) * 1863-06-16 Improvement in sewing-machines
US194379A (en) * 1877-08-21 Improvement in condition-powders for horses and cattle
US97699A (en) * 1869-12-07 Improvement in flexible pipe-coupling
US227758A (en) * 1880-05-18 Samuel b
US12400A (en) * 1855-02-13 Head-supporter for railroad-cars
US145720A (en) * 1873-12-23 Improvement in nail-separating devices
US4800485A (en) * 1982-06-01 1989-01-24 American Telephone And Telegraph Company On-line documentation facility
US4698625A (en) * 1985-05-30 1987-10-06 International Business Machines Corp. Graphic highlight adjacent a pointing cursor
US4757549A (en) * 1985-12-12 1988-07-12 International Business Machines Corp. Freehand drawing containing invisible lines
JPH0685128B2 (ja) * 1987-03-12 1994-10-26 フアナツク株式会社 自動プログラミングシステム
US5111398A (en) 1988-11-21 1992-05-05 Xerox Corporation Processing natural language text using autonomous punctuational structure
CA2027253C (en) * 1989-12-29 1997-12-16 Steven C. Bagley Editing text in an image
JP2855797B2 (ja) * 1990-06-15 1999-02-10 富士ゼロックス株式会社 文書処理装置
US5544317A (en) * 1990-11-20 1996-08-06 Berg; David A. Method for continuing transmission of commands for interactive graphics presentation in a computer network
US5172422A (en) 1991-05-13 1992-12-15 Eastman Kodak Company Fast character segmentation of skewed text lines for optical character recognition
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
US5335290A (en) * 1992-04-06 1994-08-02 Ricoh Corporation Segmentation of text, picture and lines of a document image
JPH05298358A (ja) 1992-04-21 1993-11-12 Toshiba Corp 文書構造解析装置及び文書構造解析方法
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 富士ゼロックス株式会社 表認識装置
JPH06214983A (ja) 1993-01-20 1994-08-05 Kokusai Denshin Denwa Co Ltd <Kdd> 文書画像の論理構造化文書への変換方法および装置
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
JP3349787B2 (ja) * 1993-10-15 2002-11-25 株式会社ソニー・コンピュータエンタテインメント 描画データ作成装置及び描画データ作成方法
JP2618832B2 (ja) 1994-06-16 1997-06-11 日本アイ・ビー・エム株式会社 文書の論理構造の解析方法及びシステム
AUPM704394A0 (en) * 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Optimization method for the efficient production of images
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
US5883588A (en) * 1994-10-04 1999-03-16 Nec Corporation Data compression system and data compression device for improving data compression rate and coding speed
US5778356A (en) * 1994-11-10 1998-07-07 Cadis, Inc. Dynamically selectable language display system for object oriented database management system
US5987171A (en) * 1994-11-10 1999-11-16 Canon Kabushiki Kaisha Page analysis system
DE69600461T2 (de) * 1995-01-17 1999-03-11 Eastman Kodak Co System und Verfahren zur Bewertung der Abbildung eines Formulars
US5805911A (en) * 1995-02-01 1998-09-08 Microsoft Corporation Word prediction system
JP3545824B2 (ja) 1995-02-21 2004-07-21 富士通株式会社 データ検索装置
US5689585A (en) 1995-04-28 1997-11-18 Xerox Corporation Method for aligning a text image to a transcription of the image
US5680511A (en) * 1995-06-07 1997-10-21 Dragon Systems, Inc. Systems and methods for word recognition
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 構造化文書生成方法および装置
US6141462A (en) * 1995-10-11 2000-10-31 Dainippon Screen Mfg. Co., Ltd. Image processing using adjoining relationships between image parts
US5892842A (en) 1995-12-14 1999-04-06 Xerox Corporation Automatic method of identifying sentence boundaries in a document image
US5841900A (en) * 1996-01-11 1998-11-24 Xerox Corporation Method for graph-based table recognition
US5798487A (en) * 1996-01-18 1998-08-25 Tedea Huntleigh Intl. Ltd. Weighing device for rotary filling machines
JP3061765B2 (ja) 1996-05-23 2000-07-10 ゼロックス コーポレイション コンピュータベースの文書処理方法
US5784487A (en) 1996-05-23 1998-07-21 Xerox Corporation System for document layout analysis
US6119120A (en) * 1996-06-28 2000-09-12 Microsoft Corporation Computer implemented methods for constructing a compressed data structure from a data string and for using the data structure to find data patterns in the data string
JP3772401B2 (ja) 1996-07-11 2006-05-10 富士ゼロックス株式会社 文書分類装置
US5956737A (en) 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
JP3099756B2 (ja) 1996-10-31 2000-10-16 富士ゼロックス株式会社 文書処理装置、単語抽出装置及び単語抽出方法
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
US6226402B1 (en) 1996-12-20 2001-05-01 Fujitsu Limited Ruled line extracting apparatus for extracting ruled line from normal document image and method thereof
US6374200B1 (en) 1997-02-03 2002-04-16 Fujitsu Limited Layout apparatus for laying out objects in space and method thereof
US6252597B1 (en) * 1997-02-14 2001-06-26 Netscape Communications Corporation Scalable user interface for graphically representing hierarchical data
US6175844B1 (en) * 1997-05-29 2001-01-16 Adobe Systems Incorporated Ordering groups of text in an image
JP3143079B2 (ja) 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
US6298357B1 (en) * 1997-06-03 2001-10-02 Adobe Systems Incorporated Structure extraction on electronic documents
US6687404B1 (en) 1997-06-20 2004-02-03 Xerox Corporation Automatic training of layout parameters in a 2D image model
US7237193B1 (en) * 1997-07-29 2007-06-26 Symantec Corporation Unified program for simultaneously displaying graphically-editable graphics presentation and linguistically-editable linguistic definition of the graphics presentation and for synchronizing the graphics presentation and the linguistic definition to one another
US5991756A (en) * 1997-11-03 1999-11-23 Yahoo, Inc. Information retrieval from hierarchical compound documents
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
US7760187B2 (en) * 2004-07-30 2010-07-20 Apple Inc. Visual expander
JP3940491B2 (ja) 1998-02-27 2007-07-04 株式会社東芝 文書処理装置および文書処理方法
US6092092A (en) * 1998-03-13 2000-07-18 International Business Machines Corporation Gap-based style-run array mechanism
US6211856B1 (en) * 1998-04-17 2001-04-03 Sung M. Choi Graphical user interface touch screen with an auto zoom feature
US6377704B1 (en) * 1998-04-30 2002-04-23 Xerox Corporation Method for inset detection in document layout analysis
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 文書処理装置、文書分類装置、文書処理方法、文書分類方法およびそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US20070065838A1 (en) * 1999-01-19 2007-03-22 Maxygen, Inc. Oligonucleotide mediated nucleic acid recombination
US6377285B1 (en) * 1999-01-29 2002-04-23 Sony Corporation Zooming space-grid for graphical user interface
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
JP2001101164A (ja) 1999-09-29 2001-04-13 Toshiba Corp 文書画像処理装置及び文書画像処理方法
US7249318B1 (en) * 1999-11-08 2007-07-24 Adobe Systems Incorporated Style sheet generation
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
US20030090473A1 (en) * 2000-03-24 2003-05-15 Joshi Vikas B. Multiple screen automatic programming interface
US7210099B2 (en) * 2000-06-12 2007-04-24 Softview Llc Resolution independent vector display of internet content
TW466415B (en) * 2000-08-28 2001-12-01 Compal Electronics Inc Hand-held device with zooming display function
US6938204B1 (en) 2000-08-31 2005-08-30 International Business Machines Corporation Array-based extensible document storage format
AUPR063400A0 (en) 2000-10-06 2000-11-02 Canon Kabushiki Kaisha Xml encoding scheme
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
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US20020118885A1 (en) * 2001-02-27 2002-08-29 Bernard Smeets Font compression 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
CA2340531C (en) * 2001-03-12 2006-10-10 Ibm Canada Limited-Ibm Canada Limitee Document retrieval system and search method using word set and character look-up tables
US7565605B2 (en) 2001-05-08 2009-07-21 Nokia, Inc. Reorganizing content of an electronic document
US6643653B1 (en) * 2001-06-01 2003-11-04 Oracle International Corporation Method and apparatus for identifying a data sequence related to a given data sequence
WO2003009177A1 (en) 2001-07-16 2003-01-30 Dh Labs, Inc. Web site application development method using object model for managing web-based content
KR100474724B1 (ko) * 2001-08-04 2005-03-08 삼성전자주식회사 터치스크린을 가지는 장치 및 그 장치에 외부디스플레이기기를 연결하여 사용하는 방법
US7046848B1 (en) * 2001-08-22 2006-05-16 Olcott Peter L Method and system for recognizing machine generated character glyphs and icons in graphic images
US7483938B2 (en) * 2001-09-27 2009-01-27 International Business Machines Corporation System for character validation and method therefor
US6801673B2 (en) 2001-10-09 2004-10-05 Hewlett-Packard Development Company, L.P. Section extraction tool for PDF documents
US7031910B2 (en) * 2001-10-16 2006-04-18 Xerox Corporation Method and system for encoding and accessing linguistic frequency data
NO316480B1 (no) 2001-11-15 2004-01-26 Forinnova As Fremgangsmåte og system for tekstuell granskning og oppdagelse
AUPR962001A0 (en) 2001-12-19 2002-01-24 Redbank Manor Pty Ltd Document display system and method
JP2003288334A (ja) 2002-03-28 2003-10-10 Toshiba Corp 文書処理装置及び文書処理方法
AU2003243169B2 (en) 2002-04-24 2009-03-19 Intel Corporation System and method for processing of XML documents represented as an event stream
US7164797B2 (en) * 2002-04-25 2007-01-16 Microsoft Corporation Clustering
US7142728B2 (en) 2002-05-17 2006-11-28 Science Applications International Corporation Method and system for extracting information from a document
US6904170B2 (en) * 2002-05-17 2005-06-07 Hewlett-Packard Development Company, L.P. Method and system for document segmentation
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
US7523394B2 (en) * 2002-06-28 2009-04-21 Microsoft Corporation Word-processing document stored in a single XML file that may be manipulated by applications that understand XML
JP2004038321A (ja) 2002-06-28 2004-02-05 Fujitsu Ltd 文書レイアウト解析プログラム、文書レイアウト解析装置および文書レイアウト解析方法
US7324120B2 (en) 2002-07-01 2008-01-29 Xerox Corporation Segmentation method and system for scanned documents
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
US20050216836A1 (en) * 2002-08-09 2005-09-29 Triplearc Uk Limited Electronic document processing
US20060104511A1 (en) 2002-08-20 2006-05-18 Guo Jinhong K Method, system and apparatus for generating structured document files
US6965388B2 (en) * 2002-10-21 2005-11-15 Microsoft Corporation System and method for block scaling data to fit a screen on a mobile device
US7365758B2 (en) * 2002-10-21 2008-04-29 Microsoft Corporation System and method for scaling data according to an optimal width for display on a mobile device
US7295711B1 (en) * 2002-10-23 2007-11-13 Altera Corporation Method and apparatus for merging related image segments
US20040083268A1 (en) * 2002-10-28 2004-04-29 Arti Shukla Methods and apparatuses for interfacing portable devices with digital sender devices
US7019713B2 (en) * 2002-10-30 2006-03-28 The University Of Chicago Methods and measurement engine for aligning multi-projector display systems
CN100337227C (zh) 2002-10-31 2007-09-12 艾瑞赞公司 为移动通信装置的文档内容做摘要的方法和装置
JP3974511B2 (ja) 2002-12-19 2007-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報検索のためのデータ構造を生成するコンピュータ・システム、そのための方法、情報検索のためのデータ構造を生成するコンピュータ実行可能なプログラム、情報検索のためのデータ構造を生成するコンピュータ実行可能なプログラムを記憶したコンピュータ可読な記憶媒体、情報検索システム、およびグラフィカル・ユーザ・インタフェイス・システム
US7272258B2 (en) * 2003-01-29 2007-09-18 Ricoh Co., Ltd. Reformatting documents using document analysis information
AU2003900865A0 (en) * 2003-02-26 2003-03-13 Silverbrook Research Pty Ltd Methods, systems and apparatus (NPW010)
US7313754B2 (en) * 2003-03-14 2007-12-25 Texterity, Inc. Method and expert system for deducing document structure in document conversion
US7064829B2 (en) * 2003-03-20 2006-06-20 Timbre Technologies, Inc. Generic interface for an optical metrology system
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
US8056001B2 (en) * 2003-04-10 2011-11-08 Hewlett-Packard Development Company, L.P. Method and apparatus for classifying elements of a document
US7890852B2 (en) 2003-06-26 2011-02-15 International Business Machines Corporation Rich text handling for a web application
JP2005043990A (ja) * 2003-07-23 2005-02-17 Toshiba Corp 文書処理装置および文書処理方法
US7428700B2 (en) * 2003-07-28 2008-09-23 Microsoft Corporation Vision-based document segmentation
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
US7360157B1 (en) * 2003-09-19 2008-04-15 Microsoft Corporation Aligning content in an electronic document
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
US7554689B2 (en) 2003-10-15 2009-06-30 Canon Kabushiki Kaisha Document layout method
JP2005149269A (ja) 2003-11-18 2005-06-09 Hitachi Systems & Services Ltd 構造化文書の処理システム
JP4012140B2 (ja) * 2003-11-20 2007-11-21 キヤノン株式会社 画像処理装置、情報処理装置及びそれらの制御方法、プログラム
US7814419B2 (en) * 2003-11-26 2010-10-12 Nokia Corporation Changing an orientation of a user interface via a course of motion
US7085590B2 (en) * 2003-12-31 2006-08-01 Sony Ericsson Mobile Communications Ab Mobile terminal with ergonomic imaging functions
US7441186B2 (en) * 2004-01-23 2008-10-21 Microsoft Corporation System and method for automatically grouping items
US7441204B2 (en) * 2004-02-06 2008-10-21 Microsoft Corporation Method and system for automatically displaying content of a window on a display that has changed orientation
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
US7697756B2 (en) * 2004-04-09 2010-04-13 Siemens Medical Solutions Usa, Inc. GPU accelerated multi-label image segmentation (MLS)
US7499588B2 (en) 2004-05-20 2009-03-03 Microsoft Corporation Low resolution OCR for camera acquired documents
US7769756B2 (en) * 2004-06-07 2010-08-03 Sling Media, Inc. Selection and presentation of context-relevant supplemental content and advertising
KR100747879B1 (ko) 2004-06-10 2007-08-08 캐논 가부시끼가이샤 화상 처리 장치, 제어 방법 및 기록 매체
US20050283739A1 (en) * 2004-06-18 2005-12-22 Julia Mohr Method and system to improve usability of a web application by providing a zoom function
EP1782278A4 (en) * 2004-06-23 2012-07-04 Plain Sight Systems Inc SYSTEM AND METHOD FOR DOCUMENT ANALYSIS, PROCESSING AND INFORMATION EXTRACTION
US7284192B2 (en) * 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents
US7584422B2 (en) * 2004-07-12 2009-09-01 Informatica Corporation System and method for data format transformation
US7343369B2 (en) * 2004-11-18 2008-03-11 International Business Machines Corporation Method and apparatus for predicting selectivity of database query join conditions using hypothetical query predicates having skewed value constants
CN100568221C (zh) 2004-11-22 2009-12-09 北京北大方正技术研究院有限公司 一种对报纸版面进行文字阅读顺序恢复的方法
WO2006087854A1 (ja) * 2004-11-25 2006-08-24 Sharp Kabushiki Kaisha 情報分類装置、情報分類方法、情報分類プログラム、情報分類システム
US7676743B2 (en) * 2004-11-30 2010-03-09 Adobe Systems, Incorporated Applying type fitting across grouped text frames in a page layout application
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
JP4314204B2 (ja) 2005-03-11 2009-08-12 株式会社東芝 文書管理方法、システム及びプログラム
US7924285B2 (en) 2005-04-06 2011-04-12 Microsoft Corporation Exposing various levels of text granularity for animation and other effects
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
KR101196566B1 (ko) * 2005-05-24 2012-11-01 가부시키가이샤 터보 데이터 라보라토리 멀티 프로세서 시스템 및 그 정보처리방법
US7392473B2 (en) 2005-05-26 2008-06-24 Xerox Corporation Method and apparatus for determining logical document structure
EP1732012B1 (en) * 2005-06-09 2007-10-10 PDFlib GmbH Method of identifying redundant text in an electronic document
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
US8249344B2 (en) 2005-07-01 2012-08-21 Microsoft Corporation Grammatical parsing of document visual structures
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
US7734554B2 (en) 2005-10-27 2010-06-08 Hewlett-Packard Development Company, L.P. Deploying a document classification system
JP4666155B2 (ja) 2005-11-18 2011-04-06 ソニー株式会社 リチウムイオン二次電池
US8307275B2 (en) 2005-12-08 2012-11-06 International Business Machines Corporation Document-based information and uniform resource locator (URL) management
JP5238105B2 (ja) 2005-12-09 2013-07-17 富士通株式会社 プログラム、及びデータ抽出方法
US7853869B2 (en) 2005-12-14 2010-12-14 Microsoft Corporation Creation of semantic objects for providing logical structure to markup language representations of documents
US7877685B2 (en) * 2005-12-29 2011-01-25 Sap Ag Persistent adjustable text selector
US7730422B2 (en) * 2006-01-25 2010-06-01 Microsoft Corporation Smart icon placement across desktop size changes
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
EP1841073A1 (en) * 2006-03-29 2007-10-03 STMicroelectronics N.V. Fast convergence LDPC decoding using BCJR algorithm at the check nodes
CN101055577A (zh) 2006-04-12 2007-10-17 龙搜(北京)科技有限公司 可扩展标记语言集中器
CN101055578A (zh) 2006-04-12 2007-10-17 龙搜(北京)科技有限公司 基于规则的文档内容挖掘器
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
JP5049515B2 (ja) * 2006-06-06 2012-10-17 キヤノン株式会社 情報処理装置および情報処理方法および情報処理プログラム
US20070294646A1 (en) 2006-06-14 2007-12-20 Sybase, Inc. System and Method for Delivering Mobile RSS Content
US7805289B2 (en) 2006-07-10 2010-09-28 Microsoft Corporation Aligning hierarchal and sequential document trees to identify parallel data
DE102006046703A1 (de) * 2006-10-02 2008-04-17 Siemens Audiologische Technik Gmbh Hörvorrichtung mit gesteuerten Eingangskanälen und entsprechendes Verfahren
US20080120309A1 (en) * 2006-11-17 2008-05-22 Microsoft Corporation Storing, maintaining and locating information
US7911481B1 (en) * 2006-12-14 2011-03-22 Disney Enterprises, Inc. Method and apparatus of graphical object selection
US8689132B2 (en) * 2007-01-07 2014-04-01 Apple Inc. Portable electronic device, method, and graphical user interface for displaying electronic documents and lists
US9813531B2 (en) * 2007-01-22 2017-11-07 Sisvel International S.A. System and method for screen orientation in a rich media environment
US20080183657A1 (en) 2007-01-26 2008-07-31 Yuan-Chi Chang Method and apparatus for providing direct access to unique hierarchical data items
US7778953B2 (en) 2007-02-19 2010-08-17 Kabushiki Kaisha Toshiba Document management apparatus and document management method
US20080231643A1 (en) * 2007-03-21 2008-09-25 Nick Fletcher Method and apparatus for controlling the size or opacity of map elements rendered in an interactive map view
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
US8201096B2 (en) 2007-06-09 2012-06-12 Apple Inc. Browsing or searching user interfaces and other aspects
US9529438B2 (en) * 2007-06-27 2016-12-27 Hewlett-Packard Development Company, L.P. Printing structured documents
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
US20090089448A1 (en) 2007-09-28 2009-04-02 David Sze Mobile browser with zoom operations using progressive image download
CA2700992A1 (en) * 2007-09-28 2009-04-02 Research In Motion Limited Method and apparatus for providing zoom functionality in a portable device display
US20090091564A1 (en) * 2007-10-03 2009-04-09 Raju Thevan System and method for rendering electronic documents having overlapping primitives
US8125691B2 (en) 2007-10-11 2012-02-28 Canon Kabushiki Kaisha Information processing apparatus and method, computer program and computer-readable recording medium for embedding watermark information
US20090109243A1 (en) * 2007-10-25 2009-04-30 Nokia Corporation Apparatus and method for zooming objects on a display
JP2009110500A (ja) 2007-10-29 2009-05-21 Toshiba Corp ドキュメント処理装置、ドキュメント処理方法、ドキュメント処理装置のプログラム
US8015168B2 (en) * 2007-11-12 2011-09-06 Sap Ag String pooling
RU2007141666A (ru) 2007-11-13 2009-05-20 Николай Игоревич Докучаев (RU) Способ сбора, обработки и каталогизации целевой информации из неструктурированных источников
US8909654B2 (en) 2007-11-19 2014-12-09 Nippon Telegraph And Telephone Corporation Information search method, apparatus, program and computer readable recording medium
US8136402B2 (en) * 2007-11-28 2012-03-20 International Business Machines Corporation Accelerometer module for use with a touch sensitive device
US8504945B2 (en) * 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US8217964B2 (en) * 2008-02-14 2012-07-10 Nokia Corporation Information presentation based on display screen orientation
WO2010000020A1 (en) 2008-06-30 2010-01-07 Cathrx Ltd A catheter
US7809195B1 (en) * 2008-09-18 2010-10-05 Ernest Greene Encoding system providing discrimination, classification, and recognition of shapes and patterns
US8539342B1 (en) * 2008-10-16 2013-09-17 Adobe Systems Incorporated Read-order inference via content sorting
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
US8719701B2 (en) 2009-01-02 2014-05-06 Apple Inc. Identification of guides and gutters of a document
US20100185651A1 (en) * 2009-01-16 2010-07-22 Google Inc. Retrieving and displaying information from an unstructured electronic document collection
WO2010096193A2 (en) * 2009-02-18 2010-08-26 Exbiblio B.V. Identifying a document by performing spectral analysis on the contents of the document
TW201224718A (en) * 2010-12-03 2012-06-16 Hon Hai Prec Ind Co Ltd Wind guiding cover and computer system with same
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
US20130007004A1 (en) * 2011-06-30 2013-01-03 Landon Ip, Inc. Method and apparatus for creating a search index for a composite document and searching same
US20150121298A1 (en) * 2013-10-31 2015-04-30 Evernote Corporation Multi-touch navigation of multidimensional object hierarchies

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090104071A (ko) * 2007-06-29 2009-10-05 캐논 가부시끼가이샤 화상 처리 장치, 화상 처리 방법 및 기억 매체
KR20100033412A (ko) * 2007-06-29 2010-03-29 캐논 가부시끼가이샤 화상 처리 장치, 화상 처리 방법 및 컴퓨터 판독 가능 저장 매체

Also Published As

Publication number Publication date
JP2016006661A (ja) 2016-01-14
KR20110112397A (ko) 2011-10-12
US20130185631A1 (en) 2013-07-18
WO2010078475A3 (en) 2011-04-14
EP2374067A2 (en) 2011-10-12
US8352855B2 (en) 2013-01-08
US8892992B2 (en) 2014-11-18
US20130042172A1 (en) 2013-02-14
US20150324338A1 (en) 2015-11-12
GB2498137A (en) 2013-07-03
KR20130051017A (ko) 2013-05-16
US8443278B2 (en) 2013-05-14
KR101463703B1 (ko) 2014-11-19
GB201305919D0 (en) 2013-05-15
US8473467B2 (en) 2013-06-25
GB2479479A (en) 2011-10-12
US20100174978A1 (en) 2010-07-08
WO2010078475A4 (en) 2011-06-03
US8261186B2 (en) 2012-09-04
US20100174732A1 (en) 2010-07-08
US20130311490A1 (en) 2013-11-21
US9959259B2 (en) 2018-05-01
US8365072B2 (en) 2013-01-29
CN102317933A (zh) 2012-01-11
US8832549B2 (en) 2014-09-09
US20100174976A1 (en) 2010-07-08
KR20130116958A (ko) 2013-10-24
US20100174979A1 (en) 2010-07-08
US20100174977A1 (en) 2010-07-08
WO2010078475A2 (en) 2010-07-08
US9063911B2 (en) 2015-06-23
US20100174975A1 (en) 2010-07-08
US20100174982A1 (en) 2010-07-08
GB201111173D0 (en) 2011-08-17
US20100174983A1 (en) 2010-07-08
US8719701B2 (en) 2014-05-06
JP2012514792A (ja) 2012-06-28
DE112009004951T5 (de) 2012-06-06
US9460063B2 (en) 2016-10-04
US20100174985A1 (en) 2010-07-08
JP6141921B2 (ja) 2017-06-07
US20100174980A1 (en) 2010-07-08
US8438472B2 (en) 2013-05-07
US9575945B2 (en) 2017-02-21

Similar Documents

Publication Publication Date Title
KR101324799B1 (ko) 문서 재구조화를 위한 방법 및 시스템
JP5789525B2 (ja) 文書コンテンツの順序付け
KR101321309B1 (ko) 문서 내의 목록들의 재구성
US20120185511A1 (en) Storage of a document using multiple representations
EP2477122B1 (en) Ordering document content

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: 20160929

Year of fee payment: 4