JPH08212366A - 文書ページを解析するアプリケーションプログラムインタフェース及びその生成方法 - Google Patents

文書ページを解析するアプリケーションプログラムインタフェース及びその生成方法

Info

Publication number
JPH08212366A
JPH08212366A JP7281537A JP28153795A JPH08212366A JP H08212366 A JPH08212366 A JP H08212366A JP 7281537 A JP7281537 A JP 7281537A JP 28153795 A JP28153795 A JP 28153795A JP H08212366 A JPH08212366 A JP H08212366A
Authority
JP
Japan
Prior art keywords
block
function
page
text
hierarchical tree
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP7281537A
Other languages
English (en)
Other versions
JP3943614B2 (ja
Inventor
Thieu Quang Nguyen
クァン グーイェン シェウ
Mann Chang
チャン マン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Information Systems Inc
Original Assignee
Canon Information Systems Inc
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 Canon Information Systems Inc filed Critical Canon Information Systems Inc
Publication of JPH08212366A publication Critical patent/JPH08212366A/ja
Application granted granted Critical
Publication of JP3943614B2 publication Critical patent/JP3943614B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/40Software arrangements specially adapted for pattern recognition, e.g. user interfaces or toolboxes therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/945User interactive design; Environments; Toolboxes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Document Processing Apparatus (AREA)
  • Character Input (AREA)
  • Processing Or Creating Images (AREA)
  • Machine Translation (AREA)
  • Image Analysis (AREA)

Abstract

(57)【要約】 【課題】 ブロック選択プログラムの機能を使用するペ
ージ解析を行なうため、そしてその結果得られるデータ
構造へのアクセスを行なうための文書ページを解析する
取り扱いが容易なアプリケーションプログラムインタフ
ェース及びその生成方法の提供。 【解決手段】 使用者は、目的に応じて1つ或はそれ以
上の機能とそれに対応するデータファイルを不図示のデ
ィスプレイに表示されたアプリケーションプログラムイ
ンタフェースライブラリから選択する。コンパイルされ
新たに生成されたプログラムは、不図示のディスクに格
納される。そして、使用者、または他のプログラムによ
り不図示のディスクから直接実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ブロック選択プロ
グラムにおける文書解析機能へのアクセスと、その結果
得られるデータ構造へアクセスするアプリケーションプ
ログラムインタフェース(以下、API)及びその生成
方法に関する。特に、本発明は、ページ解析用APIの
ライブラリと、APIライブラリを利用したページ解析
プログラム及びその生成方法に関する。このAPIライ
ブラリの機能は、ブロック選択技術によって得られる階
層ツリー構造のデータに対するトラバース及びアクセス
を可能とする。
【0002】
【従来の技術】米国特許出願第07/873,012
号、及び同第08/171,720号にて開示されたよ
うな、近年開発されたブロック選択技術は、文書ページ
内の異なった形式のイメージデータを区別するために文
書ページにおけるイメージを自動的に解析する。このよ
うなブロック選択技術の結果は、光学式キャラクター認
識(OCR)、データ圧縮、データルーティング等のよ
うに、次の処理がそのイメージ上で行われるための形式
を決めるために利用される。例えば、テキストデータと
して指定されたイメージデータは、図形データとして指
定されたイメージデータがOCR処理されない間、OC
R処理される。結果として、異なった形式のイメージデ
ータは、オペレータが介入することなく入力され、そし
て自動的に処理される。
【0003】以下、上述のブロック選択技術がどのよう
に動作するかについて、従来例を図1〜図3を参照して
説明する。
【0004】図1は、従来例としての代表文書のページ
を示す図である。
【0005】図中、文書ページ101は、上下2つの欄
を有するフォーマットに配されている。このページは、
タイトル102、水平線104、テキスト領域(テキス
トデータの線を含む)105、106、そして107、
ハーフトーン図形領域(テキストではないグラフィック
データを含む)108、表(テキスト情報を含む)11
0、枠領域116、見出しデータ126を伴うハーフト
ーン図形領域121、そして見出しデータ137を伴う
図形領域132及び135を有する。
【0006】米国特許出願第07/873,012号、
及び同第08/171,720号にて記載され、参照資
料として組み入れられた開示内容のブロック選択技術に
従って、文書ページ101のそれぞれの領域は、その内
部で得られるイメージデータの形式に応じて指定され
る。またその時、イメージデータは、それぞれの形式に
基づいて分割される。ブロック選択プログラムが文書ペ
ージを処理すると、図2に示すような階層ツリー構造が
生成される。
【0007】図2は、従来例としての階層ツリー構造を
示す図である。
【0008】図中、階層ツリー構造200は、分割され
たイメージデータのブロックを表わす複数のノードを有
する。このツリーにおけるそれぞれのノードは、処理さ
れた文書ページにおいてイメージデータのそれぞれのブ
ロックの特徴を定義する特徴データを有する。例えば、
この特徴データは、ブロックロケーションデータ、サイ
ズデータ、属性データ(テキスト、図形、表等のような
イメージ形式)、サブ属性データ、そして子ノード・親
ノードポインタを有する。この従来例において、子また
は子孫ノードは、イメージデータのより大きい方のブロ
ックの内部に存在するイメージデータを表わす。子ノー
ドは、親またはルートノード201から分岐しているノ
ード211と同じレベルのノードのように、階層ツリー
構造において親ノードからのノード分岐として表わされ
ている。更に、上述の特徴データに加えて、テキストブ
ロックを表わすノードはブロックの読み込みの方向(rea
ding orientaion)及び読み込みの順番(reading order)
を定義している特徴データをも含んでいてもよい。
【0009】階層ツリー構造200のような階層ツリー
構造が生成されると、すぐにメモリに格納される。文書
イメージでのイメージデータの処理の要求の受信におい
て、階層ツリー構造200は、メモリから検索され、そ
して互いにブロックされたイメージデータは、その相当
するノード内に格納された特徴データに従って処理され
る。
【0010】更に、文書ページのイメージデータを処理
するため階層ツリー構造の使用に加えて、階層ツリー構
造は、図3に示す文書ページ301の理解し易いフォー
マットの生成と表示にも利用することができる。
【0011】図3は、従来例としての階層ツリー構造に
基づいて生成された文書ページを示す図である。結果と
して、文書ページのブロックテンプレート301は、図
2に示される階層ツリー構造に格納された特徴データに
基づいて、使用者に対して生成され表示される。
【0012】文書ページのブロックテンプレートは、格
納された階層ツリー構造の各ノード内の特徴データと同
様に、階層化した木の構造を直接反映する。ノード内の
特徴データは、ブロックの輪郭、配置、そしてサイズの
生成に利用される。更に、各ノード内の特徴データは、
ブロックと、もし適当であれば、読み込みの順番及び読
み込みの方向を内部に有するイメージデータの形式を見
分けるために使用される。例えば、図3に示すように、
ブロックテンプレート301は、テキストブロック30
2、304、305、そして309を有し、そのそれぞ
れはノード202、204、205、そして209に対
応する。各テキストブロックは、ブロックをテキストと
して指定し、更にブロックの読み込みの順番及び読み込
みの方向の定義も行なう特徴データを有する。尚、図2
及び図3のROは、読み込みの順番を表わし、図3のT
1〜T14は、テキスト1〜テキスト14を表わす。
【0013】
【発明が解決しようとする課題】しかしながら上記の従
来例においては、使用者がブロック選択プログラムの機
能を利用するため、或は生成された階層ツリー構造内の
情報にアクセスするために、使用者は、生成された階層
ツリー構造内にどのようにデータが格納されるかと同様
に、ブロック選択プログラムの下位の処理ステップにつ
いてもよく知らなければならない。即ち、アプリケーシ
ョンの開発者は、ブロック選択プログラムとインタフェ
ースするために、生成されたツリー構造やノード情報と
同様に、ブロック選択プログラムの下位の処理ステップ
をも理解しなければならない。結果として、もしブロッ
ク選択処理のステップの下位の実行と、生成された階層
ツリー構造が変更されたならば、下位における相互作用
とのインタフェースを行なう全てのアプリケーションは
それに従って必ず変化する等の問題点があった。
【0014】それゆえ、ブロック選択技術の下位におけ
る実行を意識することなく使用させるAPIの機能及び
データファイルのように、使用者をツリーとノードの詳
細から隔絶する機能とデータファイルを有するAPIを
開発する必要性がある。
【0015】そこで本発明は、ブロック選択プログラム
の機能を使用するページ解析を行なうため、そしてその
結果得られるデータ構造へのアクセスを行なうための文
書ページを解析する取り扱いが容易なアプリケーション
プログラムインタフェース及びその生成方法の提供を目
的とする。
【0016】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は以下の構成を特徴とする。
【0017】即ち、本発明の1つの見地として、本発明
は、ブロック選択プログラムのページ解析の機能性にア
クセスするため、そしてその結果得られるデータ構造に
アクセスするためのアプリケーションプログラムインタ
フェースである。アプリケーションプログラムインタフ
ェースは、文書ページを解析する機能、ページ解析に基
づいて階層ツリー構造を生成する機能、そしてポインタ
を返す(return)機能を有するブロック選択の機能性を操
作することが可能な複数のブロック選択機能を備える。
ここで、ポインタを返す(return)機能とは、解析された
ページを表わす階層ツリー構造のルートノードのブロッ
クIDである。アプリケーションプログラムインタフェ
ースは、複数の階層ツリー構造へのアクセス機能をトラ
バースする機能、そして使用者により要求されるイメー
ジデータに相当するブロックに属するイメージデータを
有し、そして要求されたイメージデータの属性を有する
ノードに対するノードポインタを決定し、得るための複
数のブロック機能を有する階層ツリー構造内部のノード
に対するポインタを得る機能をも備えることを特徴とす
る。
【0018】また、本発明のもう1つの見地として、本
発明は、ブロック選択プログラムのページ解析の機能性
にアクセスするため、そしてその結果得られるデータ構
造にアクセスするためのアプリケーションプログラムイ
ンタフェースを生成する方法である。この方法は、ブロ
ック選択機能を操作する複数のページ解析機能の格納、
そして複数の階層ツリー構造へのアクセス機能をメモリ
へ格納工程を備えることを特徴とする。更にこの方法
は、ブロック選択プログラムのページ解析機能にアクセ
スが可能であり、そしてその結果得られるデータ構造に
アクセスが可能なアプリケーションプログラムインタフ
ェースを生成するため、複数のページ解析機能のうちの
少なくとも1つと、そして複数の階層ツリー構造へのア
クセス機能のうちの少なくとも1つとをメモリからの選
択工程と、複数のページ解析機能のうちの少なくとも1
つと、そして複数の階層ツリー構造へのアクセス機能の
うちの少なくとも1つとを結合させる工程とを備えるこ
とを特徴とする。
【0019】
【発明の実施の形態】本願は、後述の実施例に開示され
るコンピュータプログラムリスト(ソフトウエア関数の
定義リスト)と共に登録される。
【0020】また、本明細書の開示の形態は、著作権保
護を受ける題材を包含する。著作権の所有者は、特許商
標庁の特許原簿または記録上に見られるどの文書または
どの特許の開示のファクシミリによる複写物にも異議は
唱えない。しかし、著作権の所有者は、著作物について
の全ての権利を明らかに保有する。
【0021】更に、"Method And apparatus For Charac
ter Recognition(米国特許出願第07/873,012
号)"、及び"Method And apparatus For Selecting Text
And/Or Non-Text Blocks In A Stored Document(同第
08/171,720号)"、そして"Page analysis Sy
stem(同第08/ 号)"に開示される内容が参
照資料として組み入れられる。
【0022】はじめに、本発明の性質を迅速に理解する
ために本願の概要を述べれば、アプリケーションプログ
ラムインタフェースは、ブロック選択プログラムのペー
ジ解析機能にアクセスし、それにより得られたデータ構
造にアクセスする。このアプリケーションプログラムイ
ンタフェースは、ブロック選択機能を操作する複数のペ
ージ解析機能、即ち、文書ページを解析する機能、その
解析された文書ページに相当する階層ツリー構造を生成
する機能、そしてブロックID或は解析された文書ペー
ジのルートノード(root node)にポインタをリターンす
る機能を備えている。複数の階層ツリー構造へのアクセ
ス機能は、階層ツリー構造をトラバース(traverse)し、
その階層ツリー構造における目的とするノードを突き止
める。本発明のより完全な理解及び本発明の有利な点
は、後述の記載事項によって明らかになる。
【0023】以下、本発明の一実施形態を図面を参照し
て詳細に説明する。
【0024】図4は、本発明を適用するコンピュータの
構成図である。
【0025】図中、コンピュータ10は、MacIntosh
社、IBM社製PC、或はMicrosoft社製Windowsのような
ウィンドウ環境を備えるPC互換コンピュータのような
コンピュータである。コンピュータ10は、カラーモニ
タ等のディスプレイスクリーン12、ユーザーコマンド
を入力するキーボード13、そしてスクリーン12上に
表示された対象を操作するマウス等のポインティング装
置14を備える。
【0026】また、コンピュータ10は、圧縮されたま
たは圧縮されていないフォーマットの文書イメージファ
イル等を有するデータファイルの格納や、ブロック選択
機能を備えた少なくとも1つのブロック選択プログラ
ム、アプリケーションプログラムインタフェース機能を
備えたアプリケーションプログラムインタフェースライ
ブラリ、そしてそれらのデータファイルを有するアプリ
ケーションプログラムファイルの格納を行なうコンピュ
ータディスク11のような大容量記憶装置を備える。コ
ンピュータディスク11には、更に種々の階層ツリー構
造データのためのブロック選択プログラム処理を行った
各文書ページ、そしてブロック選択機能の種々の操作と
階層ツリー構造内部のデータにアクセスする種々の要求
元(claimant)ページの解析プログラムも格納されてい
る。
【0027】文書イメージデータは、文書またはその他
のイメージをスキャンし、それらのビットマップイメー
ジを提供するスキャナ16から入力される。文書イメー
ジは、ネットワークインタフェース24またはファクシ
ミリ/モデムインタフェース26を経由し、その他の外
部装置のように他の色々なソースからコンピュータ10
に入力される。また、プリンタ18は、文書イメージの
出力を行なう。
【0028】プログラム可能な汎用のコンピュータの構
成は、図4に示されるものに限られるわけではなく、ス
タンドアローンコンピュータまたは他の形式のデータ処
理装置においても本発明を実施できることは言うまでも
ない。
【0029】図5は、本発明の一実施形態としてのコン
ピュータ10の内部構成を示すブロック図である。
【0030】図中、コンピュータ10は、中央処理装置
(CPU)20、スキャナインタフェース22、プリン
タインタフェース23、ネットワークインタフェース2
4、ファクシミリ/モデムインタフェース26、ディス
プレイインタフェース27、キーボードインタフェース
28、マウスインタフェース29、メインメモリ30、
そしてディスク11を備え、これらはそれぞれコンピュ
ータバス21によりインタフェースされている。
【0031】メインメモリ30は、ページアナライザA
PIまたはブロック選択プログラムの種々の処理工程の
ように、格納されたプログラムの指令を実行する間、C
PU20が使用するランダムアクセスメモリを提供する
ため、コンピュータバス21とインタフェースされてい
る。即ち、CPU20は、これらのプログラムをディス
ク11からメインメモリ30の内部にロードし、メイン
メモリ30の外部でこれら格納されたプログラムを実行
する。
【0032】使用者の命令に従って、格納されたアプリ
ケーションプログラムは、イメージ処理とデータの操作
を提供する。例えば、ブロック選択が行われる前後に、
使用者が文書を生成、操作、眺めるため、Windows用のW
ardperfectのような卓上処理プログラムが起動されても
よい。同様に、入力された文書ページ内のイメージデー
タの種々の形式を解析し、Windows環境下でページ解析
の結果をオペレータに対して表示するため、ページ解析
プログラムがブロック選択処理を動作させるために実行
されてもよい。
【0033】図6A及び図6Bは、本発明の一実施形態
としてのAPI機能ライブラリを示す図であり、それぞ
れページ解析プログラムを生成するために使用される。
【0034】ページ解析のためのプログラムを生成する
ため、APIライブラリの内容が、ディスク11から検
索される。目的とする生成プログラムを得るため、ペー
ジ解析プログラムは、APIライブラリ内部にある機能
とデータファイルとを結合させることにより生成され
る。例えば、図6Aに示されるAPI機能ライブラリ6
01は、ブロック選択プログラムを操作する機能と、そ
の機能の結果得られるデータ構造へアクセスする機能と
を備える。API機能ライブラリ601におけるAPI
機能は、単に本実施形態にて使用できるページ解析機能
の一例にすぎない。従って、本発明において使用できる
他の機能については、実施例にて後述する。
【0035】図6Aに示すように、API機能ライブラ
リ601は、ページ解析機能602、ノード関係機能6
09、テキストブロック機能614、表ブロック機能6
18、ライン機能623、そして図形機能625を備え
る。ページ解析機能は、要求されるタスクを行なうため
にこれらの機能の一部または全部を利用することが可能
である。これらの機能のそれぞれについての詳細は後述
する。
【0036】本実施形態において、ページ解析機能60
2は、種々のブロック選択処理工程を操作するために利
用される。通常、ページ解析を行なう前にページ解析プ
ログラムは、初期化ページ解析機能603を実行する。
この機能は、内部の変数を初期化し、処理に必要な内部
のメモリをページ解析機能604によりコールされるブ
ロック選択を行なうブロック選択処理に割り当てる。メ
モリが割り当てられ、変数が初期化されるとすぐに、ペ
ージ選択プログラムはページ解析機能604を実行す
る。この機能は、格納されている入力済みの文書のペー
ジにページ解析処理を実行する。ページ解析機能604
の結果は、階層ツリー構造としてメモリ内に格納され
る。ページ解析機能604が完了すると、階層ツリー構
造は完成され、ルートブロックIDがリターンされる。
もしページを追加して解析したいのであれば、前のペー
ジの処理に利用されたメモリ領域をクリアするフリーペ
ージデータが実行される。
【0037】ページ解析の完了後、プログラムは、初期
化ページ解析機能603により割り当てられたメモリを
開放するため、そしてページ解析アプリケーションを終
了するために終了ページ解析機能605を実行する。
【0038】ページ解析機能602は、更にブロック形
式機能606を備える。この機能が実行されると、図
形、テキスト、非テキストのような特別なブロックの属
性がリターンされる。ページ傾き機能607が実行され
ると、ページ全体の傾き角の10倍された値がリターン
される。ここで、値が0であれば傾き無しを示し、例え
ば、リターンされた値が11と22であれば、それぞれ
傾き角は1.1と2.2を表わす。
【0039】APIライブラリにおける種々の機能を利
用してページが解析され、階層ツリー構造が生成される
とすぐに、使用者は、ツリーにおけるノード間の関係を
決定するために階層ツリー構造に質問することができ
る。つまり、ノード関係機能609を利用することによ
り、使用者は、ツリー内のノードとそのツリー内のその
他のノードとの関係を決めることができる。このように
して、例えば、全ての子ノードの獲得機能(GetAllchild
ren function)610は、指定された親またはルートノ
ードを有するイメージデータの指定された形式における
全ノードのブロックIDをリターンする。子ノードの数
量獲得機能(GetNumberOfchildren function)612を利
用することにより、プログラムは、指定されたノードの
子ノードの数量をリターンする。同様に、親ノードの獲
得機能(GetParent function)613により、プログラム
は、指定された子ノードの親ノードのブロックIDをリ
ターンする。
【0040】API機能ライブラリ601における他の
機能は、使用者が各ノードについて更に細かく質問する
ことを許可する。例えば、テキストブロック機能614
の種々の機能を利用することにより、使用者は、テキス
トブロックの第1のテキストライン、最後のテキストラ
イン、或はその次のテキストラインを得ることができ
る。第1のテキストライン獲得機能(GetFirstTextLine
function)615を利用することにより、プログラム
は、指定されたテキストノードにおける第1のテキスト
ラインのブロックIDであるポインタをリターンする。
同様に、最後のテキストライン獲得機能(GetLastTextLi
ne function)616、そして次のテキストライン獲得機
能(GetNextTextLine function)617を利用することに
より、プログラムは、テキストブロックにおけるブロッ
クID、または最後のテキストライン、そして次のテキ
ストラインであるポインタをそれぞれリターンする。も
し使用者が階層ツリー内の表ノードへの質問を望むので
あれば、使用者は、表ブロック機能618を利用するこ
とにより、各表ノード内のデータを決定できる。この機
能は、第1の表のセル獲得機能(GetFirstTableCell fun
ction)619、最後の表のセル獲得機能(GetLastTableC
ell function)620、次の表のセル獲得機能(GetNextT
ableCell function)621、そして表のセル数量獲得機
能(GetNumberOfCellsInTable function)622を備えて
いる。ライン機能623そして図形機能625のような
他のAPI機能は、階層ツリー構造において使用者がラ
インノードと図形ノード内の情報をそれぞれ決定するこ
とを許す。
【0041】図6Bは、パラメータと定義とを有するA
PIデータファイルを示している。APIデータファイ
ル701の内部に備えられたパラメータと定義は、AP
I機能ライブラリ601内で定義され、関係付けられた
API機能により利用される。API機能は、階層ツリ
ー内のデータにアクセスするため、そしてアクセスされ
たデータをユーザーフレンドリなフォーマットに翻訳す
るためにそれら関係付けられたデータファイルを利用す
る。尚、APIデータファイル701に記載されたパラ
メータと定義は、単に本実施形態にて使用できるパラメ
ータと定義の一例にすぎない。従って、本発明において
使用できる他の定義とパラメータについては、実施例に
て後述する。
【0042】本発明の一実施形態において、APIデー
タファイル701はエラーコード703を有する。この
エラーコード703は、ページ解析が予め定義された事
象の発生を行なえない場合にエラーコードをリターンす
るため、初期化ページ解析機能603、そしてページ解
析機能605により使用される。例えば、エラーコード
は、ブロック選択処理を実行するために要求されるメモ
リの容量が十分でない場合、またはページの傾きがペー
ジ解析処理を正確に行なうには大きすぎる場合に出力さ
れる。
【0043】ブロックの関係形式の定義(Block relatio
nship-type definitions)704は、親、子、そして関
係なし等の指定されたノード間の関係に関する情報をリ
ターンするため、ノード関係機能609により使用され
る。ライン形式の定義705は、ライン機能623に応
じて情報をリターンする時にアクセスされる。そして図
形形式の定義706は、図形機能625に応じて情報を
リターンする時にアクセスされる。
【0044】APIライブラリ601及び701に格納
されたAPIデータファイル及びAPI機能を利用し、
使用者は、目的とするAPIを生成する。複数のページ
解析機能のうちの少なくとも1つと、少なくとも1つの
データファイルとを結合することによりページ解析プロ
グラムを生成することができる。例えば、使用者は、デ
ィスク11に格納されたブロック選択プログラムを実行
するために、ページ解析機能603を選択してもよい。
使用者の最終目標に応じて、使用者は、複数の関係機能
のうちの少なくとも1つ、または複数のテキスト選択機
能、表ブロック機能、ラインブロック機能、または図面
ブロック機能のような目的とするノードを特徴付ける機
能のうちの少なくとも1つをも選択してもよい。選択さ
れたそれぞれの機能は、それに相当するAPIデータフ
ァイル701からのデータファイルと結合される。
【0045】目的とする機能とそれらの関係付けられた
データファイルとを結合させると同時に、ページ選択プ
ログラムは形成される。新たに生成されたプログラム
は、その時、その予め定義されたタスクを実行すること
に使用できる。例えば、使用者の最終目標は、文書ペー
ジ上に存在する全てのテキストブロックに光学的文字認
識(OCR)処理の実行であってもよい。従って、プロ
グラムは、テキスト属性を持つルートノードの全ての子
ブロックをリターンするためにページ解析機能603と
全ての子ブロック獲得機能610を備える。少なくとも
これら2つの機能を利用することにより、使用者は、テ
キストであるルートノードの全ての子ブロックを獲得す
ることができる。そして、使用者は、その時OCR処理
プログラムに対するそのプログラムの結果を得ることが
できる。
【0046】図7は、本発明の一実施形態としてのAP
Iによるアプリケーションプログラムの生成方法を示す
フローチャートである。
【0047】図中、ステップS701において、図6A
及び図6Bに示されるようなAPIライブラリは、ディ
スク11から不図示のランダムアクセスメモリにダウン
ロードされる。ステップS702において、ランダムア
クセスメモリにダウンロードされたAPIライブラリ
は、使用者に対して表示される。使用者の最終目標に応
じて、1つ或はそれ以上の機能とそれに対応するデータ
構造が、目的とする結果をもたらすプログラムを得るた
めにAPIライブラリから選択され、結合される。
【0048】このようにしてステップS704におい
て、使用者は、1つ或はそれ以上の機能とそれに対応す
るデータファイルをAPIライブラリから選択する。ス
テップS705において、機能とデータファイルは、目
的とするアプリケーションプログラムを形成するために
コンパイルされる。
【0049】ステップS707において、新たに生成さ
れたプログラムは、ディスク11に格納される。そし
て、その目的とする機能を果すために使用者により、ま
たは他のプログラムによりディスク11から直接実行さ
れる。
【0050】尚、本発明は、本実施形態のようにパーソ
ナルコンピュータ、プリンタ、インタフェース等の複数
の機器から構成されるシステムに適用しても、複写機等
の1つの機器からなる装置に適用しても良い。また、本
発明はシステム或は装置にプログラムを供給することに
よって達成される場合にも適用できることはいうまでも
ない。この場合、本発明を達成するためのソフトウェア
によって表されるプログラムを格納した記憶媒体から、
該プログラムを該システム或は装置に読み出すことによ
って、そのシステム或は装置が、本発明の効果を享受す
ることが可能となる。
【0051】<本実施形態の効果>使用者は、目的とす
る1つ或はそれ以上の機能とそれに対応するデータファ
イルをディスプレイ12に表示されたAPIライブラリ
から選択すれば、必要とするアプリケーションプログラ
ムインタフェースを得られるようになる。
【0052】
【実施例】以下、本発明の一実施例を図面を参照して説
明する。尚、以下に添付するプログラム上の”¥”は原
文におけるバックスラッシュを表わす。
【0053】はじめにページアナライザSDKは、ペー
ジイメージの論理的な構造を解析するための機能のセッ
トを体系的に、そして統一化された方法により提供す
る。概念上、ページは、テキスト、表題、表、図形、
枠、ライン或は単純なノイズのような種々の形態の小さ
な構成要素から成り立つ。これらの構成要素のうちの幾
つかは、更に小さな構成要素を含むことができる。SD
Kは、利便性と汎用性を確保するように設計され、実行
される。
【0054】ページアナライザSDKは、ページイメー
ジを受け入れ、ブロックに分解し(ゾーンとも呼ばれ
る)、形式に従ってブロックを分類し、それらの読み込
み順序を決定し、そしてメモリ内にそのページを表わす
ツリー構造を生成する。API機能は、使用者がツリー
をトラバース(traverse)すること、そしてその内部の情
報を利用することを許可するが、ツリーの直接的な修正
は許可しない。種々のAPI機能は、メモリの割り付け
と開放に責任を持つコーラ(caller)を必要とする。
【0055】<ブロック選択技術> ブロック:ブロック選択は、文書を解析し、そしてその
文書の全ての重要な領域を分類する。認識されるブロッ
クを、以下に示す。
【0056】・テキスト:文章の段落がいくつ含まれる
についての厳密なルールはない。テキスト領域の読み込
み方向は、垂直、水平、または不明が許される。テキス
トは、通常のテキスト、表題、表の内部のテキスト、見
出しまたは図形を伴うテキストが許される。
【0057】・図形:ラインが描かれた図形:ラインア
ート形式の図形、これらに含まれるテキストも認識され
る。ハーフトーンの図形:原稿のイメージとして、グレ
イスケールの図形、ハーフトーンの図形、連続したトー
ンの図形、または写真の認識が可能である。
【0058】・表:表を小さなセルに分割し、読み取り
可能なラインで表わされているどの典型的な表も認識さ
れる。尚、スキャン後に不完全なラインを有する表の場
合、エラーの確立は高いであろう。
【0059】・ライン:同一ページにおける大部分のテ
キストの字の太さ程度の実線や、点線や斜線も認識され
る。スキャン後に認識のよいものを得るため、ラインの
エッジ部分は滑らかであるべきである。ラインには、以
下の3つの形式がある。
【0060】水平線 :水平方向の実線/点線 垂直線 :垂直方向の実線/点線 ジョイント線:90度に正確に交差した水平線と垂直線 ここで、ジョイント線は、時には異なる領域を分割する
セパレータとして存在するため、我々はジョイント線の
認識を試みる。
【0061】・枠:枠は、長方形により囲まれた通常の
ものを認識する。枠の太さと枠内の密度は、認識に影響
する。
【0062】・部位:図面を伴う見出し及び/またはテ
キストと同様に、分割するイメージの構成要素を有する
特別な形式の図形を認識する。
【0063】<APIの定義及び構造>この章は、ペー
ジ解析SDKに使用されている全ての機能とデータ構造
を記述している。
【0064】使用者は、他の関連するインクルードファ
イル(include files)を含むpa.hファイルだけを含
めるべきである。
【0065】pa.hファイル これは、PA SDKの構造と機能を表現するインクル
ードファイルである。 #ifndef pa_h #define pa_h #include "rbm.h" (種々の定義) #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef NULL #define NULL 0 #endif #ifndef BOOL #define BOOL int #endif (PA APIエラーコード) typedef int PA_ERR; #define PA_SUCCESS 0 /* エラー無し */ #define PA_ERR_INTERNAL 1 /* SDK内部のエラー */ #define PA_ERR_OUT_OF_MEMORY 2 /* システムがメモリ外 */ #define PA_ERR_NO_INIT_CALL 3 /* 初期化コール無し */ #define PA_ERR_INVALID_BLOCK_ID 4 /* block id不良 */ #define PA_ERR_EXCEED_MAX_PAGE 5 /* 最大ページ数を超えている */ /* 1つのPA間のページ */ /* セッションは10 */ #define PA_ERR_BLOCK_NOT_LINE 21 /* ブロックがラインブロックでない */ #define PA_ERR_BLOCK_NOT_PICT 22 /* ブロックが図形ブロックでない */ (文書形式)配置のスタイルまたは言語に応じて、文書
は、英文形式では左から右、和文形式または中国語形式
では上から下、或はそれらの混在を標準とすることが可
能である。 typedef enum { PA_DOC_HORIZONTAL, /* 英文形式、左から右への文書 */ PA_DOC_VERTICAL, /* 和文形式、上から下への文書 */ PA_DOC_MIXED /* 左から右、上から下へ両方 */ } PA_DOC_TYPE; (ブロックの方向形式)ページアナライザは、ブロック
の境界線を識別する。また、各ブロックの方向も検知す
る。 typedef enum { PA_DIR_UNKNOWN, /* 不明 */ PA_DIR_HORIZONTAL, /* 水平: 左から右または右から左 */ PA_DIR_VERTICAL, /* 垂直: 上から下または下から上 */ } PA_DIR_TYPE; (ライン属性) typedef enum { PA_LINE_SOLID, /* 実線 */ PA_LINE_DOTTED /* 点線 */ } PA_LINE_ATTR; (ライン形式) typedef enum { PA_LINE_HORIZONTAL, /* 水平線 */ PA_LINE_VERTICAL, /* 垂直線 */ PA_LINE_JOINT /* 多様なラインから成るジョイント線 */ /* セグメント(垂直及び/または水平)*/ } PA_LINE_TYPE; (ライン情報) typedef struct LineInfoStruct { PA_LINE_TYPE LineType; PA_LINE_ATTR LineAttr; int LineSlantAngle; } PA_LINE_INFO; (図形形式)(グレースケール化された)PA_PICT_HALFTO
NE 及び(直線と曲線で構成された)PA_PICT_LINEART の
2つの形式の図形が認識される。図形は、スタンドアロ
ーン、子ブロックを持たない独立した図形、または小さ
いイメージと見出しのような関連するテキストブロック
を有する図形であってもよい。(API機能のセクショ
ンにおいて述べているPA子ブロックの数量獲得機能
(PA_GetNumberOfChildrenBlocks)参照)。 typedef enum { PA_PICT_UNKNOWN, /* 不明の図形形式 -- ノイズ他 */ PA_PICT_HALFTONE, /* ハーフトーン図形 */ PA_PICT_LINEART, /* 小さな構成要素を含む図形 */ } PA_PICT_TYPE; (図形情報) typedef struct PictInfoStruct { PA_PICT_TYPE PictType; } PA_PICT_INFO; (基本ブロック形式) ページアナライザは、ブロックを以下の種類に分類する。 #define PA_BLOCK_UNKNOWN 0x0000 /* 不明の形式 */ #define PA_BLOCK_TEXT 0x0001 /* 標準のテキストブロック */ #define PA_BLOCK_TITLE 0x0002 /* 表題のブロック */ #define PA_BLOCK_CAPTION 0x0004 /* 見出しのブロック */ #define PA_BLOCK_TEXTLINE 0x0008 /* テキストライン */ #define PA_BLOCK_PICT 0x0010 /* 図形ブロック */ #define PA_BLOCK_LINE 0x0020 /* ライン描画ブロック */ #define PA_BLOCK_FRAME 0x0040 /* 枠ブロック */ #define PA_BLOCK_TABLE 0x0080 /* 表ブロック */ #define PA_BLOCK_REGION 0x0100 /* 小さい対象をを含む部位 */ #define PA_BLOCK_ALL_TEXT (PA_BLOCK_TEXT | \ (PA_BLOCK_TITLE | \ (PA_BLOCK_CAPTI ON) #define PA_BLOCK_NON_TEXT (PA_BLOCK_ALL_TEXT | \ (PA_BLOCK_TEXTL INE) #define PA_BLOCK_ANYTYPE (PA_BLOCK_TEXT | \ PA_BLOCK_TITLE | \ PA_BLOCK_CAPTI ON | \ PA_BLOCK_TEXTL INE | \ PA_BLOCK_PICT | \ PA_BLOCK_LINE | \ PA_BLOCK_FRAME | \ PA_BLOCK_TABLE | \ PA_BLOCK_REGION) /* 基本ブロック形式の何れか */ typedef unsigned int PA_BLOCK_TYPE; (ブロック関係の形式)ページアナラーザは、ツリーに
おけるブロックの関係を決定する typedef enum { PA_REL_SELF, /* 自身 */ PA_REL_ANCESTOR, /* 先祖 */ PA_REL_DESCENDANT, /* 子孫 */ PA_REL_PARENT, /* 親 */ PA_REL_CHILD, /* 子 */ PA_REL_OLDER_SIBLING, /* 兄または姉 */ PA_REL_YOUNGER_SIBLING, /* 弟または妹 */ PA_REL_NO_RELATION /* 関係なし */ } PA_REL_TYPE; (ブロックIDの構造) PA_BLOCK_IDの構造は、ブロックに対するハンドル(hand
le)である。 typedef struct tagBlockID { int bsapitype; void *bid; } PA_BLOCK_ID; /* ** A NULL block id. */ static PA_BLOCK_ID PA_NULL_BLOCK_ID = {0, NULL}; (全体の機能) PA_ERR PA_AnalyzePage (); PA_ERR PA_EndPageAnalyzer (); PA_ERR PA_FreePageData (); PA_ERR PA_InitPageAnalyzer (); (全体のブロック機能) BOOL PA_BlockIdIsNull (); PA_ERR PA_ExtractBlockImageBit1D (); PA_ERR PA_ExtractBlockImageByte2D (); PA_ERR PA_GetBlockBoundary (); PA_BLOCK_TYPE PA_GetBlockType (); int PA_GetPageSkew (); BOOL PA_SameBlocks (); Block Hierarchy-related Functions BOOL PA_BlockIsComposite (); PA_ERR PA_GetAllChildenBlocks (); PA_ERR PA_GetAllDescendantBlocks (); PA_BLOCK_ID PA_GetAncestorBlock (); PA_REL_TYPE PA_GetBlockRelation (); int PA_GetDepthOfBlock (); PA_BLOCK_ID PA_GetFirstChildBlock (); PA_BLOCK_ID PA_GetLastChildBlock (); PA_BLOCK_ID PA_GetNextChildBlock (); int PA_GetNumberOfChildrenBlocks (); int PA_GetNumberOfDescendantBlocks (); PA_BLOCK_ID PA_GetParentBlock (); PA_BLOCK_ID PA_GetPreviousChildBlock (); (ライン機能) PA_ERR PA_GetLineInfo (); (図形機能) PA_ERR PA_GetPictureInfo (); (テキストブロック機能)テキストブロックは、ブロッ
クの特別な形態である。テキストブロックの操作は、全
体のブロック機能を直接コールすることにより起動する
ことができる。テキストブロック機能は、全体のブロッ
ク機能をコールするマクロとして実行される。 #define PA_ExtractTextLineImageByte2D(BlockId,SourceImageInfoPtr, DestImagePtr2)\ PA_ExtractBlockImageByte2D(BlockId,SourceImageInfoPtr,DestImagePtr2) #define PA_GetFirstTextLine(BlockId) \ PA_GetFirstChildBlock (BlockId, PA_BLOCK_TEXTLINE) #define PA_GetLastTextLine(BlockId) \ PA_GetLastChildBlock (BlockId, PA_BLOCK_TEXTLINE) #define PA_GetNextTextLine(BlockId) \ PA_GetNextChildBlock (BlockId, PA_BLOCK_TEXTLINE) #define PA_GetNumberOfTextLinesInBlock(BlockId) \ PA_GetNumberOfChildrenBlocks (BlockId, PA_BLOCK_TEXTLINE) #define PA_GetPreviousTextLine(BlockId) \ PA_GetPreviousChildBlock (BlockId, PA_BLOCK_TEXTLINE) #define PA_GetTextLineBoundary(BlockId,BoundaryPtr) \ PA_GetBlockBoundary (BlockId,BoundaryPtr) (表ブロック機能)表ブロックは、ブロックの特別な形
態である。表ブロックの操作は、全体のブロック機能を
直接コールすることにより起動することができる。表ブ
ロック機能は、全体のブロック機能をコールするマクロ
として実行される("PA_GetIthTableCell"を除く)。 #define PA_GetFirstTableCell(BlockId,BlockType) \ PA_GetFirstChildBlock (BlockId, BlockType) PA_BLOCK_ID PA_GetIthTableCell (); #define PA_GetLastTableCell(BlockId,BlockType) \ PA_GetLastChildBlock (BlockId, BlockType) #define PA_GetNextTableCell(BlockId,BlockType) \ PA_GetNextChildBlock (BlockId, BlockType) #define PA_GetNumberOfCellsInTable(BlockId,BlockType) \ PA_GetNumberOfChildrenBlocks (BlockId, BlockType) #define PA_GetPreviousTableCell(BlockId,BlockType) \ PA_GetPreviousChildBlock (BlockId, BlockType) #endif /* pa_hの終わり */ rbm.hファイル これは、生のビットマップを扱う構造と機能を記述され
ているインクルードファイルである。それらは、ぺージ
解析APIにより使用されるが、PA APIとは独立
しており、他の前後関係の使用に適している。詳細は、
RBM API文書を参照されたい。 #ifndef rbm_h #define rbm_h typedef struct tagRECTANGLE { int left; int top; int right; int bottom; } RBM_RECTANGLE; #define POINTINRECTANGLE(x,y,p) \ ((x)>=(p)->left && (x)<=(p)->right && \ (y)>=(p)->top && (y)<=(p)->bottom) RBM_RAW_BITMAP構造は、解析すべきイメージに関する情
報を保持する。pImageのメンバは、イメージのスキャン
ラインの上から下までのつながりとして格納されている
圧縮されていないイメージを指し示す。それぞれのスキ
ャンラインは、左から右に1ビット/ピクセルで格納さ
れる。 typedef struct tagRAWBITMAP { unsigned char *pImage; /* -> イメージ, 1ビット/ピクセル */ int nWidthInBytes; /* バイトによるイメージの幅 */ int nWidth; /* ピクセルによるイメージの幅 */ int nHeight; /* ピクセルによるイメージの高さ */ int nDPI; /* ドット/インチにおけるイメージの密度 */ } RBM_RAW_BITMAP; #ifdef PROTOTYPE void RBM_InvertRawBitmap (RBM_RAW_BITMAP *pRawBitmap); RBM_RAW_BITMAP *RBM_CreateScaledRawBitmap (RBM_RAW_BITMAP *pRawBitmap, int nScale); RBM_RAW_BITMAP *RBM_AllocRawBitmap (int nDPI, int nWidthInBytes, int nWidthInPixels, int nHeightInPixels); void RBM_FreeRawBitmap (RBM_RAW_BITMAP *pRawBitmap); #else void RBM_InvertRawBitmap (); RBM_RAW_BITMAP *RBM_CreateScaledRawBitmap (); RBM_RAW_BITMAP *RBM_AllocRawBitmap (); void RBM_FreeRawBitmap (); #endif #ifdef PROTOTYPE int RBM_UnloadTiffPage (RBM_RAW_BITMAP *pRawBitmap); RBM_RAW_BITMAP *RBM_LoadTiffPage (char *pszFileName, int nPageNumber); #else int RBM_UnloadTiffPage (); RBM_RAW_BITMAP *RBM_LoadTiffPage (); #endif #endif /* rbm_hの終わり */ <API機能>API機能は、この章において論理的な
種類にグループ分けされ、個々に述べられる。それぞれ
の分類において機能は、アルファベット順に並べられて
いる。それぞれの分類はまた、入力されたパラメータと
機能によるリターン値についての情報を有する。返され
るエラーの意味については、前述のpa.hファイルに
おける定義を参照されたい。
【0066】(共通の機能)共通の機能を以下に示す。
【0067】PA_AnalyzePage PA_AnalyzePageは、与えられた1枚のページイメージに
おける1つの領域にページ解析を施す。結果は、ブロッ
クの階層(ツリー)であるメモリに格納される。コーラ
(caller)は、この機能をコールする前にPA_InitPageAna
lyzerをコールすべきである。現在では、10ページ同
時に処理することができる。コーラは、各ページに対し
この機能をすぐにコールし、ルートブロックIDをセー
ブしなければならない。このコーラは、その他のページ
を処理する前にページを空きの状態にするためにPA_Fre
ePageDataをコールしてはいけない。一方、コーラが、
そのページの処理を一度終了したページにより使用され
た資源を開放するために、セーブされたルートブロック
IDをパスしているPA_FreePageDataを呼ぶことは重要
である。 パラメータ: ImageInfoPtr (入力) サイズの情報をイメージするためのポインタのようなデ
ータを有する構造を示す。 DocType (入力) 文書の形式である。PA_DOC_TYPEの定義を参照された
い。 AreaPtr (入力) 解析されるべき領域の範囲を記述している構造を示す。
ポインタがNULLであれば、全体のイメージが解析される
であろう。 BlockIdPtr (出力) ページ内のブロックの分類体系におけるルートブロック
(のアドレス)である。 変数をリターンした機能: PA_SUCCESS PA_ERR_NO_INIT_CALL PA_ERR_EXCEED_MAX_PAGE機能のプロトタイプ: PA_ERR PA_AnalyzePage (ImageInfoPtr, DocType, AreaPtr, BlockIdPtr) RBM_RAW_BITMAP *ImageInfoPtr; PA_DOC_TYPE DocType; RBM_RECTANGLE *AreaPtr; PA_BLOCK_ID *BlockIdPtr; PA_EndPageAnalyzer PA_EndPageAnalyzerは、PA_InitPageAnalyzer機能によ
り割り付けられたメモリを開放する。この機能は、PA_I
nitPageAnalyzerがコールされなければ何も行なわな
い。この機能は、アプリケーションを終える前にコール
されるべきである。 パラメータ: 無し 変数をリターンした機能: PA_SUCCESS 機能のプロトタイプ: PA_ERR PA_EndPageAnalyzer () PA_FreePageData PA_FreePageDataは、PA_AnalyzePageにより生成された
ページ解析のブロックの分類体系を開放する。コーラ
は、その他のページを解析するためにPA_AnalyzePageを
コールする前にこの機能をコールしてはならない。現在
では、10ページ同時に処理することができる。一方、
コーラが、そのページの処理を一度終了したページによ
り使用された資源を開放するために、PA_AnalyzePageに
よりリターンされたルートブロックIDをパスしている
PA_FreePageDataを呼ぶことは重要である。 パラメータ: BlockId (入力) PA_AnalyzePage機能によりリターンされるブロックの分
類体系におけるルートブロックである。 変数をリターンした機能: PA_SUCCESS (0) >0 何かエラーが起きたならば 機能のプロトタイプ: PA_ERR PA_FreePageData (BlockId) PA_BLOCK_ID BlockId; PA_InitPageAnalyzer PA_InitPageAnalyzerは、内部の変数を初期化し、ペー
ジアナライザに必要な内部のメモリを割り付ける。この
機能は、一度アプリケーション全体に対してコールされ
るべきである。この機能への余分なコールは、無視され
る。PA_EndPageAnalyzerは、この機能によって割り付け
られたメモリを開放するためにコールされるべきであ
る。 パラメータ: 無し 変数をリターンした機能: PA_SUCCESS PA_ERR_OUT_OF_MEMORY 機能のプロトタイプ: PA_ERR PA_InitPageAnalyzer () (共通のブロック機能)以下の機能は、どのブロック形
式に対しても有効なわけではない。 PA_BlockIdIsNull PA_BlockIdIsNullは、ブロックIDがPA_NULL_BLOCK_ID
かどうかをチェックする。 パラメータ: BlockId (入力) チェックされるべきブロックIDである。 変数をリターンした機能: TRUE ブロックは、PA_NULL_BLOCK_IDである。 FALSE ブロックは、PA_NULL_BLOCK_IDではない。 機能のプロトタイプ: BOOL PA_BlockIdIsNull (BlockId) PA_BLOCK_ID BlockId; PA_ExtractBlockImageBit1D PA_ExtractBlockImageBit1Dは、ブロックのビットマッ
プイメージを1-Dビット/ピクセルの配列に抽出する。
使用者は、必要とされる空間の割り付けと開放に責任が
ある。目的とするビットマップの必要とされる最小の大
きさは、PA_GetBlockBoundaryをコールすることにより
決定される。 パラメータ: BlockId (入力) 抽出されるべきブロックである。 SourceImageInfoPtr (入力) 他のイメージの大きさの情報に対するポインタようなデ
ータを有する構造を示す。 DestImageInfoPtr (出力) イメージと他のイメージの大きさの情報に対するポイン
タようなデータを有する目的とする構造を示す。 変数をリターンした機能: PA_SUCCESS (0) > 0 何かエラーが起きたならば 機能のプロトタイプ: PA_ERR PA_ExtractBlockImageBit1D (BlockId, SourceImageInfoPtr, DestImageInfoPtr) PA_BLOCK_ID BlockId; RBM_RAW_BITMAP *SourceImageInfoPtr; RBM_RAW_BITMAP *DestImageInfoPtr; PA_ExtractBlockImageByte2D PA_ExtractBlockImageByte2Dは、ブロックのビットマッ
プイメージを2-Dバイト/ピクセルの配列に抽出する。2
-Dバイト/ピクセルの配列は、ポインタの配列として定
義される。
【0068】使用者は、必要とされる空間の割り付けと
開放に責任がある。目的とするビットマップの必要とさ
れる最小の大きさは、PA_GetBlockBoundaryをコールす
ることにより決定される。それぞれのポインタは、1列
のイメージを表わすunsignedcharの配列を示す。
【0069】使用者は、必要とされる空間の割り付けと
開放に責任がある。目的とするビットマップの必要とさ
れる最小の大きさは、PA_GetBlockBoundary機能をコー
ルすることにより決定される。 パラメータ: BlockId (入力) 抽出されるべきブロックである。 SourceImageInfoPtr (入力) イメージと他のイメージの大きさの情報に対するポイン
タようなデータを有する目的とする構造を示す。 DestImagePtr2 (出力) 抽出されたイメージのための2次元配列である。 変数をリターンした機能: PA_SUCCESS (0) > 0 何かエラーが起きたならば 機能のプロトタイプ: PA_ERR PA_ExtractBlockImageByte2D (BlockId, SourceImageInfoPtr, DestImagePtr2) PA_BLOCK_ID BlockId; RBM_RAW_BITMAP *SourceImageInfoPtr; unsigned char **DestImagePtr2; PA_GetBlockBoundary PA_GetBlockBoundaryは、ブロックの境界線をリターン
する。 パラメータ: BlockId (入力) 現在のブロック BoundaryPtr (出力) 境界線の構造(のアドレス) 変数をリターンした機能: PA_SUCCESS (0) >0 何かエラーが起きたならば 機能のプロトタイプ: PA_ERR PA_GetBlockBoundary (BlockId, BoundaryPtr) PA_BLOCK_ID BlockId; RBM_RECTANGLE *BoundaryPtr; PA_GetBlockType PA_GetBlockTypeは、ブロックのブロック形式をリター
ンする。 パラメータ: BlockId (入力) 現在のブロック 変数をリターンした機能: ブロック形式である。PA_BLOCK_...の定義を参照された
い。 機能のプロトタイプ: PA_BLOCK_TYPE PA_GetBlockType (BlockId) PA_BLOCK_ID BlockId; PA_GetPageSkew PA_GetPageSkewは、ページ全体の傾き角の10倍の値を
リターンする。例えば、値0は、そのページが傾いてい
ないことを示し、値11及び22は、傾き角1.1及び
2.2をそれぞれ示す。 パラメータ: BlockId (入力) PA_AnalyzePage機能によりリターンされるブロックの分
類体系におけるルートブロックである。 変数をリターンした機能: >=0 ページの傾き角(の10倍の値) -1 BlockIdが、PA_AnalyzePageによりリターンされる
ルートブロックでなければ 機能のプロトタイプ: int PA_GetPageSkew (BlockId) PA_BLOCK_ID BlockId; PA_SameBlocks PA_SameBlocksは、2つのブロックが同じかどうかをチ
ェックする。 パラメータ: BlockId1 (入力) チェックされるべき第1のブロック BlockId2 (入力) チェックされるべき第2のブロック 変数をリターンした機能: TRUE ブロックが同じ。 FALSE ブロックが同じではない。 機能のプロトタイプ: BOOL PA_SameBlocks (BlockId1, BlockId2) PA_BLOCK_ID BlockId1; PA_BLOCK_ID BlockId2; (分類体系が関連する機能) PA_BlockIsComposite PA_BlockIsCompositeは、ブロックが1つまたはそれ以
上の子ブロックを有するかどうかをチェックする。 パラメータ: BlockId (入力) チェックされるべきブロック 変数をリターンした機能: TRUE ブロックが合成のブロックである。 FALSE ブロックが合成のブロックではない。 機能のプロトタイプ: BOOL PA_BlockIsComposite (BlockId) PA_BLOCK_ID BlockId; PA_GetAllChildrenBlocks PA_GetAllChildrenBlocksは、指定された形式のブロッ
クに関係する全ての子ブロックをチェックする。コーラ
は、この機能をコールする前にPA_GetNumberOfChildren
Blocksをコールし、ブロックIDの配列のためのメモリ
を割り付けるべきである。 パラメータ: BlockId (入力) 現在のブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 ChildrenBlockIdPtr (出力) 子ブロックIDの配列に対するポインタ 変数をリターンされた機能: PA_SUCCESS (0) >0 何かエラーが起こったかどうか 機能のプロトタイプ: PA_ERR PA_GetAllChildrenBlocks (BlockId, BlockType, ChildrenBlockIdPtr) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_BLOCK_ID *ChildrenBlockIdPtr; PA_GetAllDescendantBlocks PA_GetAllDescendantBlocksは、指定された形式と指定
されたレベルの範囲内において照合するブロックの全て
の子孫ブロックを得る。
【0070】注釈、PA_BLOCK_TEXTの子(例えば、PA_BL
OCK_TEXTLINEブロック)はカウントされない。コーラ
は、PA_GetNumberOfDescendantBlocksをコールし、この
機能をコールする前にブロックID配列のためのメモリ
を割り付けるべきである。 パラメータ: BlockId (入力) 現在のブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 Levels (入力) 含まれるべき子孫のレベルの数量 DescendantBlockIdPtr (出力) 子孫のブロックIDの配列に対するポインタ 変数をリターンされた機能: PA_SUCCESS (0) >0 何かエラーが起こったかどうか 機能のプロトタイプ: PA_ERR PA_GetAllDescendantBlocks (BlockId, BlockType, Levels, DescendantBlockIdPtr) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; int Levels; PA_BLOCK_ID *DescendantBlockIdPtr; PA_GetAncestorBlock PA_GetAncestorBlockは、2つの指定されたブロックを
含む最も深く配置された(一番近い)先祖ブロックをリ
ターンする。 パラメータ: BlockId1 (入力) 第1のブロック BlockId2 (入力) 第2のブロック 変数をリターンされた機能: 先祖ブロックのブロックID そのようなブロックが見つからなければ PA_NULL_BLOCK
_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetAncestorBlock (BlockId1, BlockId2) PA_BLOCK_ID BlockId1; PA_BLOCK_ID BlockId2; PA_GetBlockRelation PA_GetBlockRelationは、第2のブロックに関して指定
された第1のブロックの関係をリターンする。 パラメータ: BlockId1 (入力) 第1のブロック BlockId2 (入力) 第2のブロック 変数をリターンされた機能: 関係の形式、PA_REL_...の定義を参照されたい。 機能のプロトタイプ: PA_REL_TYPE PA_GetBlockRelation (BlockId1, BlockId2) PA_BLOCK_ID BlockId1; PA_BLOCK_ID BlockId2; PA_GetDepthOfBlock PA_GetDepthOfBlockは、ブロックの深さをリターンす
る。 パラメータ: BlockId (入力) 現在のブロック 変数をリターンされた機能: ブロックの深さである。ページが空白のページ(例え
ば、ルートブロックがPA_NULL_BLOCK_ID)であれば、0
がリターンされるであろう。 機能のプロトタイプ: int PA_GetDepthOfBlock (BlockId) PA_BLOCK_ID BlockId; PA_GetFirstChildBlock PA_GetFirstChildBlockは、指定された形式の第1の子
ブロックをリターンする。 パラメータ: BlockId (入力) The current block. BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 形式がPA_BLOCK_ANYTYPEならば、第1のPA_BLOCK_TEXT
子ブロックに優先権が与えられる。 変数をリターンされる機能: 選択された子ブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetFirstChildBlock (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetLastChildBlock PA_GetLastChildBlockは、指定された形式の最後の子ブ
ロックをリターンする。 パラメータ: BlockId (入力) 現在のブロック BlockType (入力) 選択すべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 形式がPA_BLOCK_ANYTYPEであれば、最後のPA_BLOCK_TEX
Tの子ブロックに優先権が与えられる。 変数をリターンされた機能: 選択された子ブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetLastChildBlock (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetNextChildBlock PA_GetNextChildBlockは、現在の子ブロックにおける指
定された形式の次の子ブロックをリターンする。 注釈、次の子ブロックは、現在の子ブロックと同じレベ
ル上にある。 パラメータ: BlockId (入力) 現在の子ブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 選択された子ブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetNextChildBlock (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetNumberOfChildrenBlocks PA_GetNumberOfChildrenBlocksは、指定されたブロック
形式の隣接する子ブロックの数量をリターンする。 パラメータ: BlockId (入力) 現在のブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照された
い。 変数をリターンされた機能: 子ブロックの数量 機能のプロトタイプ: int PA_GetNumberOfChildrenBlocks (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetNumberOfDescendantBlocks PA_GetNumberOfDescendantBlocksは、指定されたブロッ
ク形式の子孫ブロックの数量とブロックのレベルとをリ
ターンする。 注釈、PA_BLOCK_TEXTブロック(例えば、PA_BLOCK_TEXT
LINEブロック)の子ブロックは、カウントされない。 パラメータ: BlockId (入力) 現在のブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照された
い。 Levels (入力) 検索されるべき子孫のレベル 変数をリターンされた機能: 子孫ブロックの数量 機能のプロトタイプ: int PA_GetNumberOfDescendantBlocks (BlockId, BlockType, Levels) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; int Levels; PA_GetParentBlock PA_GetParentBlockは、ブロックの親ブロックをリター
ンする。 パラメータ: BlockId (入力) 現在のブロック 変数をリターンされた機能: 親ブロックのブロックID 現在のブロックがルートブロックの場合は、PA_NULL_BL
OCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetParentBlock (BlockId) PA_BLOCK_ID BlockId; PA_GetPreviousChildBlock PA_GetPreviousChildBlockは、現在の子ブロックにおい
て指定された形式の前の子ブロックをリターンする。 注釈、前の子ブロックは、現在の子ブロックと同じレベ
ル上にある。 パラメータ: BlockId (入力) 現在の子ブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 選択された子ブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetPreviousChildBlock (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; (テキストブロック機能)PA_BLOCK_TEXTブロックの機
能に関する詳細説明を述べる。PA_BLOCK_TEXTブロック
は、小さいテキストラインブロックから成る。PA_BLOCK
_TEXTブロックは、OCRに関連するアプリケーション
において重要である。 PA_ExtractTextLineImageByte2D PA_ExtractTextLineImageByte2Dは、テキストラインブ
ロックのビットマップイメージを2-Dバイト/ピクセル
の配列に抽出する。2-Dバイト/ピクセルの配列は、ポ
インタの配列として定義される。それぞれのポインタ
は、1列のイメージを表わすunsigned charの配列を示
す。使用者は、必要とされる空間の割り付けと開放に責
任がある。目的とするビットマップの必要とされる最小
の大きさは、PA_GetTextLineBoundary機能をコールする
ことにより決定される。 パラメータ: BlockId (入力) 抽出されるべきブロックである。 SourceImageInfoPtr (入力) イメージと他のイメージの大きさの情報に対するポイン
タようなデータを有する目的とする構造を示す。 DestImagePtr2 (出力) 抽出されたイメージのための2次元配列である。 変数をリターンした機能: PA_SUCCESS (0) > 0 何かエラーが起きたならば 機能のプロトタイプ: PA_ERR PA_ExtractTextLineImageByte2D (BlockId, SourceImageInfoPtr, DestImagePtr2) PA_BLOCK_ID BlockId; RBM_RAW_BITMAP *SourceImageInfoPtr; unsigned char **DestImagePtr2; PA_GetFirstTextLine PA_GetFirstTextLineは、テキストブロックの第1のテ
キストラインブロックをリターンする。 パラメータ: BlockId (入力) テキストブロック 変数をリターンした機能: 選択されたテキストラインブロックのPA_BLOCK_ID 入力されたブロックがPA_BLOCK_NON_TEXTブロックであ
れば、PA_NULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetFirstTextLine (BlockId) PA_BLOCK_ID BlockId; PA_GetLastTextLine PA_GetLastTextLineは、テキストブロックの最後のテキ
ストラインをリターンする。 パラメータ: BlockId (入力) テキストブロック 変数をリターンした機能: 選択されたテキストラインブロックのPA_BLOCK_ID 入力されたブロックが、PA_BLOCK_NON_TEXTブロックで
あればPA_NULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetLastTextLine (BlockId) PA_BLOCK_ID BlockId;PA_GetNextTextLine PA_GetNextTextLineは、現在のテキストラインブロック
の次のテキストラインブロックをリターンする。 注釈、次のテキストラインブロックは、現在のテキスト
ラインブロックと同じレベル上にある。 パラメータ: BlockId (入力) テキストラインブロック 変数をリターンした機能: 選択されたテキストラインブロックのPA_BLOCK_ID ブロックが見つからなければ、PA_NULL_BLOCK_IDがリタ
ーンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetNextTextLine (BlockId) PA_BLOCK_ID BlockId; PA_GetNumberOfTextLinesInBlock PA_GetNumberOfTextLinesInBlockは、テキストブロック
におけるテキストラインブロックの数量をリターンす
る。 パラメータ: BlockId (入力) テキストブロック 変数をリターンした機能: テキストラインブロック 入力されたブロックがPA_BLOCK_NON_TEXTブロックであ
れば0がリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetNumberOfTextLinesInBlock (BlockId) PA_BLOCK_ID BlockId; PA_GetPreviousTextLine PA_GetPreviousTextLineは、現在のテキストラインブロ
ックの前のテキストラインブロックをリターンする。 注釈、前のテキストラインブロックは、現在のテキスト
ラインブロックと同じレベル上にある。 パラメータ: BlockId (入力) 現在のテキストラインブロック 変数をリターンした機能: 選択されたテキストラインブロックのPA_BLOCK_ID ブロックが見つからなければ、PA_NULL_BLOCK_IDがリタ
ーンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetPreviousTextLine (BlockId) PA_BLOCK_ID BlockId; PA_GetTextLineBoundary PA_GetTextBoundaryは、テキストラインブロックの境界
線の情報をリターンする。 パラメータ: BlockId (入力) テキストラインブロック BoundaryPtr (出力) 境界線の構造(のアドレス) 変数をリターンした機能: PA_SUCCESS (0) >0 何かエラーが起こったかどうか 機能のプロトタイプ: PA_ERR PA_GetTextLineBoundary (BlockId, BoundaryPtr) PA_BLOCK_ID BlockId; RBM_RECTANGLE *BoundaryPtr; (表機能) PA_GetFirstTableCell PA_GetFirstTableCellは、表ブロックの指定された形式
における第1の表のセルブロックをリターンする。 パラメータ: BlockId (入力) 表ブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 選択された表のセルブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetFirstTableCell (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetIthTableCell PA_GetIthTableCellは、テキストブロック内の指定され
たセルの位置における表のセルブロックをリターンす
る。 パラメータ: BlockId (入力) 表ブロック. Order (入力) 表ブロック内のセルの位置(1次元) 変数をリターンした機能: 表のセルブロックのPA_BLOCK_ID PA_NULL_BLOCK_IDは、その他が範囲外であればリターン
されるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetIthTableCell (BlockId, Order) PA_BLOCK_ID BlockId; int Order; PA_GetLastTableCell PA_GetLastTableCellは、表ブロックの指定された形式
における最後の表のセルブロックをリターンする。 パラメータ: BlockId (入力) 表ブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 選択された表のセルブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetLastTableCell (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetNextTableCell PA_GetNextTableCellは、現在の表のセルブロックの指
定された形式における次のセルブロックをリターンす
る。 注釈、次の表のセルブロックは、現在の表のセルブロッ
クと同じレベル上にある。 パラメータ: BlockId (入力) 現在の表のセルブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 選択された表のセルブロックのPA_BLOCK_ID指定された
形式のブロックが見つからない場合は、PA_NULL_BLOCK_
IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetNextTableCell (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetNumberOfCellsInTable PA_GetNumberOfCellsInTableは、表ブロックの指定され
た形式の表のセルブロックの数量をリターンする。 パラメータ: BlockId (入力) 表ブロック BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 子ブロックの数量 入力されたブロックがPA_BLOCK_TABLEブロックであれ
ば、0がリターンされるであろう。 機能のプロトタイプ: int PA_GetNumberOfCellsInTable (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; PA_GetPreviousTableCell PA_GetPreviousTableCellは、現在の表のセルブロック
の指定された形式の前のセルブロックをリターンする。 注釈、前の表のセルブロックは、現在の表のセルブロッ
クと同じレベル上にある。 パラメータ: BlockId (入力) The current table cell block. BlockType (入力) 選択されるべきブロックの形式 ブロック形式のためのPA_BLOCK_...の定義を参照 変数をリターンされた機能: 選択された表のセルブロックのPA_BLOCK_ID 指定された形式のブロックが見つからない場合は、PA_N
ULL_BLOCK_IDがリターンされるであろう。 機能のプロトタイプ: PA_BLOCK_ID PA_GetPreviousTableCell (BlockId, BlockType) PA_BLOCK_ID BlockId; PA_BLOCK_TYPE BlockType; (ライン機能)以下の機能がPA_BLOCK_LINEブロックに
与えられる。 PA_GetLineInfo PA_GetLineInfoは、ライン形式、ライン属性、ラインの
傾斜角等のようなライン情報の構造をリターンする。 パラメータ: BlockId (入力) ラインブロック LineInfoPtr (出力) ライン情報の構造(のアドレス) 詳細はPA_LINE_INFOを参照されたい。入力されたブロッ
クがPA_BLOCK_LINEブロックでなければ、エラーとしてP
A_ERR_BLOCK_NOT_LINEがリターンされるであろう。傾斜
角が0であれば、そのラインは、水平方向または垂直方
向への直線であることを意味する(ラインの形式によ
る)。 変数をリターンした機能: PA_SUCCESS PA_ERR_BLOCK_NOT_LINE 機能のプロトタイプ: PA_ERR PA_GetLineInfo (BlockId, LineInfoPtr) PA_BLOCK_ID BlockId; PA_LINE_INFO *LineInfoPtr; (図形機能)以下の機能は、PA_BLOCK_PICTブロックに
与えられる。PA_GetPictureInfo PA_GetPictureInfoは、図形の形式のような図形情報の
構造をリターンする。 パラメータ: BlockId (入力) 図形ブロック PictInfoPtr (出力) 図形情報の構造(のアドレス) 詳細は、PA_PICT_INFOを参照されたい。入力されたブロ
ックがPA_BLOCK_PICTブロックでなければ、エラーとし
てPA_ERR_BLOCK_NOT_PICTがリターンされるであろう。 変数をリターンした機能: PA_SUCCESS PA_ERR_BLOCK_NOT_PICT 機能のプロトタイプ: PA_ERR PA_GetPictureInfo (BlockId, PictInfoPtr) PA_BLOCK_ID BlockId; PA_PICT_INFO *PictInfoPtr;
【発明の効果】以上説明したように、本実施形態によれ
ば、ブロック選択プログラムの機能を使用するページ解
析を行なうため、そしてその結果得られるデータ構造へ
のアクセスを行なうための文書ページを解析する取り扱
いが容易なアプリケーションプログラムインタフェース
及びその生成方法の提供が実現する。
【0071】
【図面の簡単な説明】
【図1】従来例としての代表文書のページを示す図であ
る。
【図2】従来例としての階層ツリー構造を示す図であ
る。
【図3】従来例としての階層ツリー構造に基づいて生成
された文書ページを示す図である。
【図4】本発明を適用するコンピュータの構成図であ
る。
【図5】本発明の一実施形態としてのコンピュータ10
の内部構成を示すブロック図である。
【図6A】本発明の一実施形態としてのAPI機能ライ
ブラリを示す図であ
【図6B】本発明の一実施形態としてのAPI機能ライ
ブラリを示す図であ
【図7】本発明の一実施形態としてのAPIによるアプ
リケーションプログラムの生成方法を示すフローチャー
トである。
【符号の説明】
10 コンピュータ 11 コンピュータディスク 12 ディスプレイスクリーン 13 キーボード 14 ポインティング装置 16 スキャナ 18 プリンタ 20 中央処理装置(CPU) 21 コンピュータバス 22 スキャナインタフェース 23 プリンタインタフェース 24 ネットワークインタフェース 26 ファクシミリ/モデムインタフェース 27 ディスプレイインタフェース 28 キーボードインタフェース 29 マウスインタフェース 30 メインメモリ 101 文書ページ 102 タイトル 104 水平線 105〜107 テキスト領域 108 ハーフトーン図形領域 110 表 116 枠領域 121 ハーフトーン図形領域 126 見出しデータ 137 見出しデータ 132,135 図形領域 200 階層ツリー構造 201 親またはルートノード 202,204,205,209 ノード 211 ノード 301 文書ページのブロックテンプレート 302,304,305,309 テキストブロック T1〜T14 テキスト1〜テキスト14
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 9288−5L G06F 15/20 534 P 9288−5L 536 (72)発明者 マン チャン アメリカ合衆国 カリフォルニア州 92715,イルヴァイン,シエラ ベロー ロード 19337

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 文書ページを構成するブロックを選択す
    るブロック選択プログラムのページを解析するページ解
    析機能へのアクセスと、前記ページ解析機能の結果得ら
    れるデータ構造へのアクセスとをするためのアプリケー
    ションプログラムインタフェースにおいて、 前記ブロック選択プログラムが有するブロック選択機能
    を操作する複数のページ解析機能である文書ページを解
    析する機能、その解析された文書ページに応じて階層ツ
    リー構造を生成する機能、そして前記解析された文書ペ
    ージのルートノード(root node)にポインタをリターン
    する機能を備え、 更に、前記階層ツリー構造をトラバース(traverse)し、
    そして前記階層ツリー構造における目的とするノードを
    突き止める複数の階層ツリー構造へのアクセス機能を備
    えたことを特徴とする文書ページを解析するアプリケー
    ションプログラムインタフェース。
  2. 【請求項2】 更に、少なくとも1つの目的とするノー
    ドに、少なくとも1つのポインタをリターンする機能を
    備えた前記複数の階層ツリー構造を特徴とする請求項1
    記載の文書ページを解析するアプリケーションプログラ
    ムインタフェース。
  3. 【請求項3】 更に、前記少なくとも1つのポインタに
    相当する前記少なくとも1つの目的とするノードの属性
    情報を得るため、前記少なくとも1つのポインタを問い
    合わせする複数のノードの問い合わせ(interrogating)
    機能を備えたことを特徴とする請求項1記載の文書ペー
    ジを解析するアプリケーションプログラムインタフェー
    ス。
  4. 【請求項4】 前記複数のノードの問い合わせ機能は、
    テキストブロックの問い合わせ機能、 ここで前記テキストブロックの問い合わせ機能は、目的
    とするテキストブロックにおける第1のテキストライン
    のポインタをリターンする処理工程と、前記目的とする
    テキストブロックにおける最後のテキストラインのポイ
    ンタをリターンする処理工程と、前記目的とするテキス
    トブロックにおける次のテキストラインのポインタをリ
    ターンする処理工程と、前記目的とするテキストブロッ
    クにおけるテキストラインの数量をリターンする処理工
    程と、前記目的とするテキストブロックにおける前のテ
    キストラインのポインタをリターンする処理工程と、前
    記目的とするテキストブロックにおけるテキストライン
    の境界線の情報をリターン処理工程と、そして前記目的
    とするテキストブロックにおけるテキストラインのビッ
    トマップイメージの2次元配列を抽出する処理工程とを
    備える。を備えたことを特徴とする請求項3記載の文書
    ページを解析するアプリケーションプログラムインタフ
    ェース。
  5. 【請求項5】 前記複数のノードの問い合わせ機能は、
    図形ブロックの問い合わせ機能、 ここで前記図形ブロックの問い合わせ機能は、目的とす
    る図形ブロックの図形形式についての情報をリターンす
    る処理工程を備える。を備えたことを特徴とする請求項
    3記載の文書ページを解析するアプリケーションプログ
    ラムインタフェース。
  6. 【請求項6】 更に、データファイル、 ここで前記データファイルは、ブロック選択機能を操作
    する前記複数のページ解析機能と、前記階層ツリー構造
    をトラバースし、目的とするノードを突き止める前記複
    数の階層ツリー構造へのアクセス機能と、そして前記目
    的とするノードを問い合わせする前記複数のノードの問
    い合わせ機能とにより利用される定義とパラメータとを
    備える。を備えたことを特徴とする請求項3記載の文書
    ページを解析するアプリケーションプログラムインタフ
    ェース。
  7. 【請求項7】 前記複数のノードの問い合わせ機能は、
    ラインブロックの問い合わせ機能、 ここで前記ラインブロックの問い合わせ機能は、目的と
    するラインブロックのライン形式と他の属性とについて
    の情報をリターンする処理工程を備える。を備えたこと
    を特徴とする請求項3記載の文書ページを解析するアプ
    リケーションプログラムインタフェース。
  8. 【請求項8】 前記複数のページ解析機能は、内部変数
    を設定することにより、そして処理用のメモリを割り付
    け、その処理により得られる結果を格納することにより
    ブロック選択プログラムを初期化する初期化機能と、 入力された文書イメージに前記ブロック選択プログラム
    を実行する実行機能と前記初期化機能により設定され、
    割り付けられたメモリを開放し、そして前記実行機能を
    終了する終結(termination)機能と、を備えたことを特
    徴とする請求項1記載の文書ページを解析するアプリケ
    ーションプログラムインタフェース。
  9. 【請求項9】 前記複数の階層ツリー構造へのアクセス
    機能は、ノードの関係機能、 ここで前記ノードの関係機能は、ノード間の関係を問い
    合わせる処理工程と、前記階層ツリー構造内のノードの
    位置する深さと、テキストブロックを表わす少なくとも
    1つのノードを問い合わせる処理工程を備えるテキスト
    ノード機能と、テーブルブロックを表わす少なくとも1
    つのノードを問い合わせる処理工程を備えるテーブルノ
    ード機能と、図形ノードにより表わされる図形の形式を
    リターンする図形機能と、ラインノードにより表わされ
    るラインの形式と他の属性とをリターンするライン機能
    とを表示する処理工程とを備える。を備えたことを特徴
    とする請求項3記載の文書ページを解析するアプリケー
    ションプログラムインタフェース。
  10. 【請求項10】 前記テーブルノード機能は、 指定されたテーブルブロックの第1のテーブルセルブロ
    ックにポインタをリターンする処理工程と、 テーブルブロック内の指定されたセルの位置のテーブル
    セルをリターンする処理工程と、 指定されたテーブルブロックの最後のテーブルセルブロ
    ックにポインタをリターンする処理工程と、 指定された現在のテーブルセルブロックの次のテーブル
    セルブロックをリターンする処理工程と、 テーブルブロックの指定されたブロック形式のテーブル
    セルブロックの数量をリターンする処理工程と、 そして指定された現在のテーブルセルブロックの前のテ
    ーブルセルブロックにポインタをリターンする処理工程
    と、を備えたことを特徴とする請求項8記載の文書ペー
    ジを解析するアプリケーションプログラムインタフェー
    ス。
  11. 【請求項11】 リターンされた前記ポインタは、ブロ
    ックの識別子(identification)であることを特徴とする
    請求項2または請求項3又は請求項4記載の文書ページ
    を解析するアプリケーションプログラムインタフェー
    ス。
  12. 【請求項12】 ブロック選択プログラムのページ解析
    機能へのアクセスと、前記ページ解析機能の結果得られ
    るデータ構造へのアクセスとをするためのページ解析機
    能を生成するページ解析アプリケーションプログラムイ
    ンタフェースの生成方法において、 前記方法は、 ブロック選択機能を操作する複数のページ解析機能、 ここで前記複数のページ解析機能は、文書ページを解析
    する機能と、その解析された文書ページに相当する階層
    ツリー構造を生成する機能と、そして前記解析された文
    書ページを表わす前記階層ツリー構造のルートノードに
    ポインタをリターンする機能とを備える。をメモリへ格
    納する工程と、 更に、前記階層ツリー構造をトラバースと前記階層ツリ
    ー構造内の目的とするノードを突き止める複数の階層ツ
    リー構造へのアクセス機能をメモリへ格納する工程と、 複数のページ解析機能のうちの少なくとも1つと複数の
    階層ツリー構造へのアクセス機能のうちの少なくとも1
    つとをメモリから選択する工程と、 そして、前記ページ解析プログラムを生成するために前
    記複数のページ解析機能のうちの少なくとも1つと前記
    複数の階層ツリー構造へのアクセス機能のうちの少なく
    とも1つを結合する工程と、 ここで生成される前記ページ解析プログラムは、ブロッ
    ク選択プログラムのページ解析機能へのアクセスが可能
    であり、そして前記ページ解析機能の結果得られる階層
    ツリー構造へのアクセスが可能である。を備えたことを
    特徴とする文書ページを解析するアプリケーションプロ
    グラムインタフェースの生成方法。
  13. 【請求項13】 更に、生成された前記ページ解析プロ
    グラムは、少なくとも1つのポインタを少なくとも1つ
    の目的とするノードにリターンすることも可能であるこ
    とを特徴とする請求項12記載の文書ページを解析する
    アプリケーションプログラムインタフェースの生成方
    法。
  14. 【請求項14】 更に、データファイル、 ここで前記データファイルは、前記複数のページ解析機
    能と前記複数の階層ツリー構造へのアクセス機能とによ
    り結び付けられ、選択された前記複数のページ解析機能
    のうちの少なくとも1つと結び付けられた複数のデータ
    ファイルのうちの1つを結合され、更に、選択された前
    記複数の階層ツリー構造へのアクセス機能のうちの少な
    くとも1つと結び付けられた前記複数のデータファイル
    のうちの少なくとも1つを結合されている。を備える複
    数のデータファイルをメモリに格納する処理工程を備え
    たことを特徴とする請求項12記載の文書ページを解析
    するアプリケーションプログラムインタフェースの生成
    方法。
JP28153795A 1994-11-10 1995-10-30 文書ページを解析するアプリケーションプログラム生成方法及び装置 Expired - Fee Related JP3943614B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/338,766 US5659767A (en) 1994-11-10 1994-11-10 Application programming interface for accessing document analysis functionality of a block selection program
US08/338766 1994-11-10

Publications (2)

Publication Number Publication Date
JPH08212366A true JPH08212366A (ja) 1996-08-20
JP3943614B2 JP3943614B2 (ja) 2007-07-11

Family

ID=23326089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28153795A Expired - Fee Related JP3943614B2 (ja) 1994-11-10 1995-10-30 文書ページを解析するアプリケーションプログラム生成方法及び装置

Country Status (4)

Country Link
US (1) US5659767A (ja)
EP (1) EP0712089B1 (ja)
JP (1) JP3943614B2 (ja)
DE (1) DE69528434D1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019086860A (ja) * 2017-11-02 2019-06-06 富士ゼロックス株式会社 文書処理装置及びプログラム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933842A (en) * 1996-05-23 1999-08-03 Microsoft Corporation Method and system for compressing publication documents in a computer system by selectively eliminating redundancy from a hierarchy of constituent data structures
US5815703A (en) * 1996-06-28 1998-09-29 Microsoft Corporation Computer-based uniform data interface (UDI) method and system using an application programming interface (API)
US6894704B1 (en) 1999-11-22 2005-05-17 Adobe Systems Incorporated Processing complex regions of illustration artwork
US6720977B1 (en) 1999-11-22 2004-04-13 Adobe Systems Incorporated Processing illustration artwork
US7177046B2 (en) * 2000-04-11 2007-02-13 Oce Printing Systems Gmbh Method for producing and outputting at least one printed page
US7181687B2 (en) 2002-06-27 2007-02-20 Adobe Systems Incorporated Previewing the effects of flattening transparency
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
JP2005352696A (ja) * 2004-06-09 2005-12-22 Canon Inc 画像処理装置及びその制御方法、プログラム
US8296751B2 (en) * 2004-07-09 2012-10-23 Sap Ag Software application program interface method and system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3107655A1 (de) * 1981-02-27 1982-09-16 Siemens AG, 1000 Berlin und 8000 München Verfahren zum auffinden und abgrenzen von textbereichen auf einer vorlage, die text-, graphik- und/oder bildbereiche enthalten kann
US4803643A (en) * 1987-08-10 1989-02-07 Oclc Online Computer Library Center Incorporated System and method for creating memory-retained, formatted pages of text, tabulation, and graphic data
US5202977A (en) * 1990-07-13 1993-04-13 Premenos Corp. Edi translation system using plurality of communication processes and de-enveloping procedure corresponding to transmitted communication process
US5335290A (en) * 1992-04-06 1994-08-02 Ricoh Corporation Segmentation of text, picture and lines of a document image

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019086860A (ja) * 2017-11-02 2019-06-06 富士ゼロックス株式会社 文書処理装置及びプログラム

Also Published As

Publication number Publication date
JP3943614B2 (ja) 2007-07-11
EP0712089A3 (en) 1996-12-18
US5659767A (en) 1997-08-19
EP0712089B1 (en) 2002-10-02
DE69528434D1 (de) 2002-11-07
EP0712089A2 (en) 1996-05-15

Similar Documents

Publication Publication Date Title
US5825944A (en) Block selection review and editing system
US6014458A (en) System for designating document direction
Joseph et al. PICQUERY: A high level query language for pictorial database management
US7350142B2 (en) Method and system for creating a table version of a document
KR101031700B1 (ko) 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스
US6903751B2 (en) System and method for editing electronic images
US6195664B1 (en) Method and system for controlling the conversion of a file from an input format to an output format
JP3940491B2 (ja) 文書処理装置および文書処理方法
US7149967B2 (en) Method and system for creating a table version of a document
US20050289452A1 (en) Architecture for ink annotations on web documents
JP2016535907A (ja) モバイル向けのおよび他の表示環境をサポートするインタラクティブなサイトおよびアプリケーションの自動変換のためのシステムおよび方法
US20030068099A1 (en) Section extraction tool for PDF documents
MXPA04006932A (es) Segmentacion de documentos con base en la vision.
JPH08249329A (ja) ポータブル電子文書に記載されている単語を識別する方法及び装置
US20020106124A1 (en) Block selection of table features
JPH08212366A (ja) 文書ページを解析するアプリケーションプログラムインタフェース及びその生成方法
Christodoulakis et al. Development of a Multimedia Jnformation S3stem for an Offke Environment
US7027071B2 (en) Selecting elements from an electronic document
US7873902B2 (en) Transformation of versions of reports
KR100340031B1 (ko) 다른 형식의 도면 데이터를 객체 관계형 지리정보시스템용 데이터로 변환하는 방법
US5696918A (en) Method of managing marker entities within a document data stream
US7461340B1 (en) Integrated decorative panels
Raines Tcl/Tk Pocket Reference
Fruchterman DAFS: A standard for document and image understanding
JP2004240749A (ja) 画像検索装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070406

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110413

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130413

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140413

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees