(57)【要約】【課題】画像形成デバイスで種々の言語フォーマットをサポートできるようにする。【解決手段】入力データストリームの言語フォーマットを認識することは、現在の状態における認識するデータストリームの次のデータサンプルを読み出し、次のデータサンプルに応答して次の状態を選択し、次の状態に遷移し、次の状態が終了状態となるまで、次のデータサンプルの読み出しおよび次の状態の選択を繰り返し、次の状態が終了状態となったときに、現在の状態に応答し、言語フォーマットを識別することを含む。【選択図】図１
2008052698.tif 000002
【特許請求の範囲】
【請求項１】
全言語フォーマットの遷移状態を包括する状態遷移図を有し、
該状態遷移図を用いて、入力データストリームの一部であるデータサンプルと、現在の状態の状態遷移とを比較して、次の状態に遷移するステップと、
次の状態が終了状態となるまで、次のデータサンプルを入力データストリームから読み出して、現在の状態の状態遷移に基づいて次の状態に遷移するステップと、
次の状態が終了状態となったときに、現在の状態に関する言語フォーマットを識別するステップとを備えた言語フォーマット認識方法。
【請求項２】
現在の状態に応答し、言語フォーマットを識別するステップが、
現在の状態および一致する言語フォーマットを含む前の状態から、最新の状態を決定するステップと、
最新の状態から一致する言語フォーマットを言語フォーマットとして選択するステップと、
最新の状態が見つからないときに言語フォーマットが非決定的であることを表示するステップとを備えた、請求項１記載の言語フォーマット認識方法。
【請求項３】
現在の状態が一致する言語フォーマットを含むとき、一致する言語フォーマットをトラッキングするステップと、
最新にトラッキングした、一致する言語フォーマットを言語フォーマットとして選択するステップを更に備えた、請求項１記載の言語フォーマット認識方法。
【請求項４】
入力データストリームから、予め決められた先行データを分離するステップを更に備えた、請求項１記載の言語フォーマット認識方法。
【請求項５】
先行データブロックのフォーマットを識別するステップと、
前記識別したフォーマットに応答して先行データブロックをスキップするステップとを更に備えた、請求項４記載の言語フォーマット認識方法。
【請求項６】
先行データブロックを処理するのに必要な入力データストリーム内にデータブロックが存在することを証明するステップと、
データブロックが存在しない場合にエラーを表示するステップとを更に備えた、請求項５記載の言語フォーマット認識方法。
【請求項７】
現在の状態および次の状態のうちの少なくとも１つに応答して次のデータサンプルのサイズを選択する、請求項１記載の言語フォーマット認識方法。
【請求項８】
入力データストリームのデータサンプルを読み出すステップと、
前記データサンプルに応答して、潜在的言語フォーマットのセットを更新するステップと、
セット内に１つの潜在的言語フォーマットが残るか、または全く残らなくなるまで、読み出しおよび更新を繰り返すステップと、
セット内に１つの潜在的言語フォーマットが残った場合に、入力データストリーム内に残っている潜在的言語フォーマットに対し、言語フォーマットシグネチャーが存在することを検証するステップと、
前記検証された言語フォーマットシグネチャーに応答し、言語フォーマットを識別するステップとを備えた、入力データストリームの言語フォーマットを認識する言語フォーマット認識方法。
【請求項９】
セット内に潜在的言語フォーマットが全くなくなったときに、言語フォーマットが非決定的であることを表示するステップを更に備えた、請求項８記載の言語フォーマット認識方法。
【請求項１０】
前記データサンプルの読み出しを繰り返すステップが、次のデータサンプルを順次読み出すステップを含む、請求項８記載の言語フォーマット認識方法。
【請求項１１】
前記セットを更新するステップが、
前記データサンプルと前記セット内の潜在的言語フォーマットの対応する言語シグネチャーフラグメントとを比較するステップと、
データサンプルに一致する言語シグネチャーフラグメントを含む潜在的言語フォーマットを選択し、セット内に残すステップとを備えた、請求項８記載の言語フォーマット認識方法。
【請求項１２】
全言語フォーマットの遷移状態を包括する状態遷移図を有し、該遷移図を参照して、入力データストリームの一部であるデータサンプルと現在の状態の状態遷移とを比較して次の状態に遷移させるステップと、
次の状態が終了状態となるまで次のデータサンプルを読み出して次の状態に遷移させるステップと、
次の状態が終了状態になったときに、現在の状態に関する言語フォーマットを識別させるステップ、とを実行させるプログラムを記録したコンピュータで読み取り可能な記録媒体。
【請求項１３】
実行時に、更にコンピュータに、
現在の状態が一致する言語フォーマットを含むときに、一致する言語フォーマットをトラッキングさせ、最新のトラッキングした一致した言語フォーマットを言語フォーマットとして選択させるステップを実行させるプログラムを記録した、請求項１２記載のコンピュータで読み取り可能な記録媒体。
【請求項１４】
実行時に、更にコンピュータに、
先行データブロックのフォーマットを識別させ、
前記識別されたフォーマットに応答し、先行データブロックをスキップさせるステップ、を実行させるプログラムを記録した、請求項１２記載のコンピュータで読み取り可能な記録媒体。
【請求項１５】
入力データストリームを受信するようになっている入力インターフェースと、
前記入力インターフェースに結合されたプロセッサとを備え、該プロセッサは、
現在の状態の入力データストリームの次のデータサンプルを読み出し、次のデータサンプルに応答し、次の状態を選択し、
次の状態に遷移すると共に、次の状態が終了状態となるまで、次のデータサンプルの読み出しおよび次の状態の選択を繰り返し、
次の状態が終了状態となったときに現在の状態に応答し、言語フォーマットを識別する言語フォーマット認識装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、言語フォーマット認識方法および装置に関し、より詳細には、画像形成デバイスにおける言語自動切り換え技術に関する。
【背景技術】
【０００２】
１つの言語フォーマットしかサポートしていない画像形成デバイスがある。例えば、プリンタの印刷エンジンに固有のラスターデータフォーマットしかサポートしていないプリンタがある。かかるデバイスでは、事前のチェックを行うことなく、プリントデータインタープリターへ画像形成デバイスが送られる。入力信号が正しい言語フォーマットである場合、この入力信号は認識され、ジョブが出力される。そうでない場合、入力信号の一部またはすべてが認識されず、ジョブが出力されないか、または不正確に出力される。
【０００３】
多数の言語フォーマットをサポートできる画像形成装置も存在する。しかしながら、画像形成データに先立つ、明確な言語切り換えが必要となる。その後の画像形成データの言語フォーマットを指定する既知または所定のフォーマットを含む画像形成デバイスにより、コマンドまたは他のデータを受信することができる。例えば、多くの画像形成デバイスはヒューレットパッカード社のプリンタジョブ言語（ＰＪＬ）コマンド＠ＰＪＬ  ＥＮＴＥＲ  ＬＡＮＧＵＡＧＥ＝＜ｌａｎｇｕａｇｅ＞をサポートすることにより、明確な言語の切り換えをサポートしている。指定された言語がデバイスによってサポートされている場合、次に対応するインタープリターにより、画像形成データが処理される。そうでない場合、入力は拒否され、ジョブは出力されない。
【０００４】
特許文献１には、上位装置から送られた制御言語の種類判別は、制御言語毎に定められた判別ルールを順次適用することにより行なうことが提案されており、特許文献２には、各エミュレーション別にデータの比較を行う為のテーブルを用意しておき、印字用データとテーブル内のデータが一致した場合は、テーブル内のデータ夫々について予め定められた重みを考慮してエミュレーション別に得点が加算され、得点に応じてエミュレーションを決定することが提案されている。
【特許文献１】特開平８−２９０６３６号公報
【特許文献２】特開平５−９６８２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
不幸なことに、明確な言語スイッチを使用しない画像形成データの発生器は、明示的な言語の切り換えを必要とする画像形成デバイスと互換性がないことがある。
【０００６】
これとは異なり、言語フォーマットの明確な表示をすることなく、画像形成デバイスが画像形成データを受信すると、画像形成デバイスは画像形成データをサンプリングし、言語フォーマットを決定しなければならない。このプロセスは通常、自動言語切り換えと称されている。
【０００７】
自動言語切り換えの方法では、画像形成データの入力ストリームの初期バイトサンプルが予め読み出され、言語認識プロセスへ送られる。サポートされた各言語に対し、言語固有の認識テスト、例えばバイトサンプル内の特殊なシグネチャーのサーチが行われる。この方法は、１つのテストが言語フォーマットの認識をアクノレッジするまで、所定のシーケンス順序で各言語固有の認識テストを実行する。（何もアクノレッジしなければ、エラーとなる。）言語が認識されると、次に対応する言語インタープリターにより入力ストリームが処理される。
【０００８】
不幸なことに、認識テストは画像形成データの各セットを用い、同じ順序で実行される。従って、リストの終了部における認識テストを行う特定の言語フォーマットに対しては、その言語フォーマットの画像形成データを受信するごとに、前の認識テストを実行しなければならず、時間とリソースが浪費される。
【０００９】
別の方法では、画像形成データの初期バイトサンプルを予め読み出し、あるグループの言語認識器に対し、サポートされている言語ごとに１つの言語認識器と比較する。各言語認識器は画像形成データの言語が対応する言語フォーマットである確率を発生する。最大の確率を有する言語フォーマットを使用する。
【００１０】
不幸なことに、１つの言語を選択するために複数の確率を使用する結果、特定の判断ではなく、正しい言語の推定が行われるだけであり、その結果は不正確な選択となることがある。関連する確率を決定するのに、言語ごとにテストを実行しなければならない。
【００１１】
別の方法では、入力ストリームの初期バイトサンプルを予め読み出し、言語認識プロセスへ送る。言語認識プロセスは言語認識器のダイナミックに決定されたシーケンス順序を使用する。関連する言語フォーマットがどれだけ多い回数で見つかるかに応じて、言語認識器の順序を更新する。
【００１２】
不幸なことに、各言語認識器はシグネチャーテスト全体を再適用している。従って、２つの言語フォーマットのそれぞれのシグネチャーの初期部分が同じであっても、同一部分に対するテストを何回も実行しなければならないことがある。
【００１３】
従って、データの言語フォーマットを決定するための改良された方法および装置が依然として求められている。
【００１４】
而して、前記特許文献１及び２に記載の発明は、プリンタ言語フォーマットを自動的に認識する点では、本発明と共通しているものの、入力データの言語認識テストを言語毎に行うものであるため、時間とリソースに無駄を生じる。
【００１５】
本発明は、全プリンタ言語フォーマットの特徴的なデータサンプルを用いて、入力データの言語認識テストを１回で行えるようにして、言語認識のための時間とリソースを少なくし、高速に印刷処理可能とすることを目的としてなされたものである。
【課題を解決するための手段】
【００１６】
一実施例では、現在の状態の入力データストリームの、次のデータサンプルを読み出し、前記次のデータサンプルに応答して次の状態を選択し、次の状態に遷移すると共に、次の状態が終了状態となるまで、次のデータサンプルの読み出しおよび次の状態の選択を繰り返し、次の状態が終了状態となったときに現在の状態に応答し、言語フォーマットを識別することにより、入力データストリームの言語フォーマットを認識する。
【００１７】
別の実施例では、入力データストリームのデータサンプルを読み出し、前記データサンプルに応答して潜在的言語フォーマットのセットを更新し、セット内に１つの潜在的言語フォーマットが残るか、または全く残らなくなるまで、読み出しおよび更新を繰り返し、セット内に１つの潜在的言語フォーマットが残った場合に、入力データストリーム内に残っている潜在的言語フォーマットに対し、言語フォーマットシグネチャーが存在することを検証し、前記検証された言語フォーマットシグネチャーに応答して言語フォーマットを識別することによって、入力データストリームの言語フォーマットを認識する。
【発明の効果】
【００１８】
本発明によると、一回で言語認識テストを行うことが可能な状態遷移図を予め準備しておき、現在の入力データストリームの状態に応じた次のデータサンプルを読み出し、次のデータサンプルと状態遷移に基づいて次の状態を決定していくことを繰り返すことで候補の言語フォーマットを絞り込んでいき、最終的に言語フォーマットを認識するようにしたので、言語認識のための時間とリソースを少なくすることができる。
【発明を実施するための最良の形態】
【００１９】
本発明の実施例では、入力データストリームからのデータサンプルを使用して、言語フォーマットを識別する。本明細書で使用するように、入力データストリームはアクセス可能な任意のメディア内の任意のデータを含む。例えば入力データストリームは、ハードディスクデバイスまたは取り外し自在な記憶装置上のファイルから読み出されるデータでもあり得るし、メモリに記憶されたデータでもあり得るし、ネットワークまたはローカルインターフェースを介して受信されるデータまたは同様なデータでもあり得る。
【００２０】
データサンプルは入力データストリームの一部である。このデータサンプルは所望する任意のサイズを有し得る。一例では、次のデータサンプルのサイズが１バイトとなることがあり、これとは異なり、サイズは、本方法を実施するプロセッサが１回の比較で使用できるサイズとなることもある。例えばプロセッサは１つの機械命令を使って２つの４バイトデータサンプルの比較を行うことができる。従って、データサンプルは４バイトのサイズとなり得る。更に、データサンプルのサイズを選択し、所望するように変えることができる。
【００２１】
１つの言語フォーマットはデータの構成または表示の特定のフォーマットである。言語フォーマットは言語フォーマットシグネチャーによって識別でき、かかる言語フォーマットのシグネチャーは他の言語フォーマットから対応する言語フォーマットを識別する、一連のデータサンプルであり得る。
【００２２】
言語シグネチャーフラグメントは言語フォーマットシグネチャーの一部の表示である。例えば「％ＰＤＦ」の言語フォーマットシグネチャーはポータブルドキュメントフォーマット（ＰＤＦ）を識別する。シグネチャーの任意の部分は言語フラグメントとなり得る。従って、「％」および「Ｐ」キャラクタは言語シグネチャーフラグメントとなり得る。更に、より大きい部分、例えば「ＤＦ」は言語シグネチャーフラグメントとなり得る。更に、言語シグネチャーの一部の組み合わせも言語シグネチャーフラグメントを形成することができる。
【００２３】
図１は、一実施例に係わる自動言語切り換えのためのシステムを示すブロック図である。このシステムはコンピュータデバイス１１０を含み、コンピュータデバイス１１０はデータサンプルに基づく言語切り換えシステム１４０を含む。
【００２４】
更にコンピュータデバイス１１０は、システムバス１１２を含み、このバスは種々のコンポーネントを接続し、かつ２つ以上のコンポーネント間でデータを交換できるように構成できる。システムバス１１２を通し、言語切り換えシステム１４０はデータサンプルを受信し、入力データストリームの言語フォーマットを識別できる。このシステムバス１１２は、種々のバス構造の１つ以上を含み、このバス構造はメモリバスまたはメモリコントローラ、周辺バスまたは種々のバスアーキテクチャのうちの任意のものを使用するローカルバスを含む。システムバス１１２により接続できる別のコンポーネントとして、処理システム１１４およびメモリ１１６を挙げることができ、他のコンポーネントとして、１つ以上の大容量記憶デバイスインターフェース１１８、入力インターフェース１２０、出力インターフェース１２２および／またはネットワークインターフェース１２４を含むことができ、これらインターフェースの各々については後述する。更に、各コンポーネントをシステムバス１１２の種々のバス構造のうちの１つ以上に結合できる。しかしながら、各コンポーネントをシステムバス１１２の種々のバス構造のどれにも結合できるが、すべてに結合する必要はない。
【００２５】
処理システム１１４は１つ以上のプロセッサを含む。例えば処理システム１１４は中央プロセッサと、オプションとして、特定の機能またはタスクを実行するようになっている１つ以上の他のプロセッサとを含むことができる。言語切り換えシステム１４０はこの処理システム１１４によって実現できる。これとは異なり、言語切り換えシステム１４０は処理システム１１４から独立していてもよい。
【００２６】
一般に、処理システム１１４はコンピュータで読み取り可能なメディア、例えばメモリ１１６、大容量記憶デバイス１２６、例えば磁気ハードディスク、取り外し自在な磁気ディスク、磁気カセット、光ディスク上またはコンピュータで読み取り可能なメディアとして見なすこともできる通信接続部、例えばネットワークインターフェース１２４から提供されるコードまたはデータ１０５のような命令を実行する。
【００２７】
メモリ１１６は１つ以上のコンピュータで読み取り可能なメディアを含む。メモリ１１６は言語切り換えシステム１４０のためのコードまたはデータ１０５を含むことができるし、またはこれらを含むように構成できる。更に、システムバス１１２を通して処理システム１１４は、かかるコードおよびデータ１０５にアクセスできる。メモリ１１６は、例えば情報を永久的に記憶するのに使用されるＲＯＭ１２８および／または情報を一時的に記憶するのに使用されるＲＡＭ１３０を含むことができる。ＲＯＭ１２８は、例えばコンピュータデバイス１１０の起動中に通信を設定するために使用される１つ以上のルーチンを有する基本入出力システム（ＢＩＯＳ）を含むことができる。ＲＡＭ１３０は１つ以上のプログラムモジュール、例えば１つ以上のオペレーティングシステム、アプリケーションプログラムおよび／またはプログラムデータを含むことができる。
【００２８】
１つ以上の大容量記憶デバイス１２６をシステムバス１１２に接続するのに、１つ以上の大容量記憶デバイスインターフェース１１８を使用できる。かかる大容量記憶デバイス１２６は言語切り換えシステム１４０によってサンプリングすべきデータストリームを含むことができる。大容量記憶デバイス１２６をコンピュータデバイス１１０に組み込むこともできるし、または周辺機器とすることもでき、この大容量記憶デバイス１２６によりコンピュータデバイス１１０は大容量のデータを保持できる。オプションとして、１つ以上の大容量記憶デバイス１２６をコンピュータデバイス１１０から取り外し自在とすることもできる。大容量記憶デバイスの例として、ハードディスクドライブ、磁気ディスクドライブ、テープドライブおよび光ディスクドライブを挙げることができる。大容量記憶デバイス１２６は磁気ハードディスク、取り外し自在な磁気ディスク、磁気カセット、光ディスクまたは別のコンピュータで読み取り可能なメディアとの間で読み出しおよび／または書き込みを行うことができる。大容量記憶デバイス１２６およびそれらの対応するコンピュータで読み取り可能なメディアは、１つ以上のプログラムモジュール、例えばオペレーティングシステム、１つ以上のアプリケーションプログラム、他のプログラムモジュールまたはプログラムデータを含むことができる、データおよび／または実行可能な命令の不揮発性記憶装置となる。
【００２９】
言語切り換えシステム１４０は、種々のインターフェースを通してデータストリームを受信できる。かかるインターフェースとして、入力インターフェース１２０、出力インターフェース１２２およびネットワークインターフェース１２４がある。
【００３０】
１つ以上の対応する入力デバイス１３２を通してユーザがデータおよび／または命令をコンピュータデバイス１１０へ入力できるように、１つ以上の入力インターフェース１２０を使用することができる。かかる入力デバイスの例として、キーボードおよび別の入力デバイス、例えばマウス、トラックボール、光ペン、スタイラスまたは他のポインティングデバイス、マイク、ジョイスティック、ゲームパッド、衛星ディシュアンテナ、スキャナー、ビデオカメラ、デジタルカメラなどを挙げることができる。同様に、これら入力デバイス１３２をシステムデバイス１１２に接続するのに利用できる入力インターフェース１２０の例として、シリアルポート、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）、ファイアーワイヤーポート（ＩＥＥＥ１３９３）または同等物を挙げることができる。
【００３１】
１つ以上の対応する出力デバイス１３４をシステムバス１１２に接続するのに、１つ以上の出力インターフェース１２２を使用することができる。出力デバイスの例として、モニタ、すなわちディスプレイスクリーン、スピーカー、プリンタおよび同等物を挙げることができる。特定の出力デバイス１３４をコンピュータデバイス１１０へ組み込んでもよいし、または周辺機器とすることもできる。出力インターフェースの例として、ビデオアダプタ、オーディオアダプタ、パラレルポート、ＵＳＢ、ファイアーワイヤーポートまたは同等物を挙げることができる。
【００３２】
１つ以上のネットワークインターフェース１２４により、コンピュータデバイス１１０はハード配線されたリンクおよび／または無線リンクを含むことができるネットワーク１３８を介して、コンピュータデバイス１３６として示された１つ以上の他のローカルまたはリモートコンピュータデバイスと情報を交換することが可能となっている。ネットワークインターフェースの例として、ローカルエリアネットワーク（ＬＡＮ）に接続するためのネットワークアダプタまたはワイドエリアネトワーク（ＷＡＮ）、例えばインターネットに接続するためのモデム、無線リンクまたは他のアダプタを挙げることができる。このネットワークインターネット１２４はコンピュータデバイス１１０に組み込んでもよいし、またはその周辺機器とすることもできる。ネットワーク化されたシステムでは、リモートメモリ記憶デバイス内にアクセス可能なプログラムモジュールまたはその一部分を記憶できる。更に、ネットワーク化されたシステムでは、コンピュータデバイス１１０は複数のネットワーク化されたコンピュータデバイスによって、機能またはタスクを実行する分散コンピュータ環境に関与できる。更に、ネットワークインターフェース１２４はネットワークインターフェース１２４を通して通信できる別の入力デバイス１３２および／または出力デバイス１３４への接続を可能にできる。かかる別の入力デバイス１３２および／または出力デバイス１３４は、コンピュータデバイス１１０に組み込んでもよいし、またはその周辺機器としてもよい。
【００３３】
図２は、一実施例に従い、入力データストリームの言語フォーマットをどのように認識するかを示す状態図である。表１は、言語フォーマットに対応するバイトシーケンスの例のリストである。表２は、図２の状態図で使用されるバイトシーケンスのリストである。「＼」の後に３つの数値が続く場合、これら３つの数値は１バイトの８進数表示である。説明のために、表２のＴＩＦＦバイトシーケンスの１つは、II*<NUL>からMM*<NUL>に変更されていることに留意されたい。
【００３４】
【表１】
2008052698.tif 000003
【００３５】
【表２】
2008052698.tif 000004
【００３６】
図２のキー６９はほとんどの状態の属性を示す。状態７０は次の状態遷移７６およびこれに対して定義されたデフォルト遷移７８を有する。次の状態遷移７６は、データサンプルとその状態に対応した潜在的言語フォーマットとの一致を示す。多数の次の状態の遷移７６が存在し得る。更に、かかる次の状態遷移７６は存在しなくてもよい。かかる次の状態遷移７６が存在し、データサンプルと次の状態遷移７６に関連する言語シグネチャーフラグメントの一致がある場合、次の状態７２を次の状態として選択できる。
【００３７】
各状態７０はデフォルト遷移７８を有する。状態７０が次の状態遷移７６を有していない場合でも、状態７０はデフォルト遷移７８を有する。このデフォルト遷移７８は終了状態７４に変化する。明瞭にするために、図２の状態はそれぞれのデフォルト状態７８および図示された終了状態７４を有しない。
【００３８】
図２の状態図から判るように、次の状態遷移７６は言語シグネチャーフラグメントと関連している。例えば「％」状態９４からの次の状態遷移７６に関連する言語シグネチャーフラグメントは、「！」の言語シグネチャーフラグメントと、「Ｐ」の言語シグネチャーフラグメントを含む。かかる言語シグネチャーフラグメントは単一バイトで表示できるが、他のサイズまたはエンコーディングも使用できる。例えばユニコード変換フォーマット（ＵＴＦ）でコード化されたキャラクタは単一キャラクタに対して多数のバイトを含むことができる。
【００３９】
図３は、入力データストリームおよび言語シグネチャーフラグメントを示す図である。バイト１５０は入力データストリームのバイトであり、本例ではこれらバイト１５０はシーケンス順序となっている。言語シグネチャーフラグメント１５２、１５４および１５６は入力データストリームの一部である。上で説明したように、言語シグネチャーフラグメントは種々のサイズを有することができる。この例では、言語シグネチャーフラグメント１５２および１５４の各々は、１バイトのサイズを有する。これと対照的に、言語シグネチャーフラグメント１５６は２バイトのサイズを有する。
【００４０】
状態は種々の方法で表示できる。一例では２５６ポインタの配列を維持でき、この場合、１バイトで表わせる各値に対して１つのポインタが対応する。配列内の各値は一致する言語フォーマットの可能な次の状態のリストへのポインタとなり得る。従って、次の状態を決定するための配列に対するインデックスとしてバイトを使用できる。
【００４１】
別の例では、１つの状態はバイトの値のリストのエミュレータを含むことができ、各バイトの値は起こり得る次の状態のリストへの対応するポインタを有する。更に各バイトの値は一致する言語フォーマットに対応する。かかる状態を用い、リスト内に各可能なバイトを含むこともできるし、含めなくてもよい。例えば一致する言語フォーマットまたは別の状態に対応するバイトの値だけをリスト内に含めてもよい。
【００４２】
更に、利用できる状態ごとに１つの状態のフォーマットを使用する必要はない。例えば初期状態は、可能な各データサンプルに対する１つの要素を有する配列のフォーマットとすることができる。最初のデータサンプルがリスト内のバイトと比較される。一致するものが何もなければ、言語フォーマットは非決定的である。その後の状態は、一致する言語フォーマットに対応するバイトの値および潜在的な次の状態のリストによって表示できる。次の状態が存在するかどうかを判断するために、データサンプルとバイトのリストとを比較する。
【００４３】
図４は、一実施例に従い、入力データストリームの言語フォーマットをどのように認識するかを示すフローチャートである。図２および図４を参照すると、初期状態９０で現在の状態がスタートする。１０にて、入力データストリームの次のデータサンプルが読み出される。次のデータサンプルに応答し、１２で次の状態が選択される。
【００４４】
図２の状態図を使用し、１２における次の状態の選択の例について説明する。初期状態９０からデータサンプルとその状態の状態遷移とを比較する。初期状態９０に対して、言語シグネチャーフラグメント「Ｍ」および「％」に対応して２つの遷移が存在する。例えば言語シグネチャーフラグメント「Ｍ」がデータサンプルと一致する場合、次の状態は「Ｍ」状態９２となる。同様に、言語シグネチャーフラグメント「％」がデータサンプルと一致する場合、次の状態は「％」状態９４となる。データサンプルが「Ｍ」または「％」の言語シグネチャーフラグメントと一致しない場合、次の状態は終了状態となる。
【００４５】
１４にて、次の状態が終了状態でない場合、現在の状態はデータサンプルによって表示されるように１６において次の状態に遷移する。これとは異なり、次の状態が終了状態である場合、１８にて、言語フォーマットが識別される。
【００４６】
上記のように、データサンプルのサイズを好きなように選択できる。更に、データサンプルは固定サイズでも可変サイズでもよい。一例では、可能な状態遷移を最小にするよう、データサンプルの選択を行う。図２を参照すると、「％」状態９４から「％！」状態９８または「％Ｐ」状態１００のいずれかに遷移する間、１バイトデータのサンプルサイズを使用できる。しかしながら、「％！」状態９８と「％Ｐ」状態１００の双方は、一致する言語フォーマットを含む状態に達するために２つのシーケンス遷移を含む。従って、いずれかの状態からの遷移に対し、１０で読み出されたデータサンプルサイズを２バイトに変換し、対応する２バイトの言語シグネチャーフラグメントと比較する。例えば現在状態が「％Ｐ」状態１００である場合、２バイトの次のデータサンプルと「ＤＦ」の２バイトの言語シグネチャーフォーマットとを比較する。ここでもし１バイトのデータサンプルが使用されたとしたら、２回の状態遷移が行われていたであろう。この結果、「％ＰＤＦ」状態９５へ１回だけの遷移が行われる。
【００４７】
１８における言語フォーマットを識別する一例では、終了状態の前のそのときの状態に基づき、言語フォーマットを識別する。一致する状態が現在の状態である場合、その一致に対応する言語フォーマットを言語フォーマットとして決定する。例えばシーケンス「％ＰＤＦ」を有する入力データフォーマットを検討する。状態遷移は、最終的にＰＤＦ言語フォーマットと一致する「％ＰＤＦ」状態９７である現在の状態となる。この状態は終了状態以外の遷移を有していないので、その状態に対応するＰＤＦ言語フォーマットの一致を言語フォーマットとして使用する。
【００４８】
これとは異なり、シーケンス「％ＰＤＸ」を有する入力データストリームを検討する。この場合、状態遷移は「％ＰＤ」状態１０８に到る。しかしながら、Ｘのデータサンプルは「％ＰＤ」状態からの遷移に対応する言語シーケンスフラグメントに一致しない。よって、終了状態が次の状態となる。「％ＰＤ」状態０１８は、一致する言語フォーマットを有しない。この結果、言語フォーマットは１８で、非決定的として識別される。
【００４９】
従って、上記一実施例を使用するとき、第１バイトと、既知の言語フォーマットシグネチャーの第１バイトとを比較する。その後のバイトと、前のバイトに一致した既知の言語シグネチャーの対応するバイトとを比較する。任意のポイントにおいて、現在のバイトと一致していなければ、識別された言語フォーマットが存在するか、または言語フォーマットが非決定的であるかのいずれかである。
【００５０】
図２において、更なる遷移を有しない状態だけが一致を有すると表示されているが、個々の状態は、一致する言語フォーマットおよび別の一致する言語フォーマットに対する他の状態への遷移の双方を含むことができる。しかしながら、より多くの潜在的な一致がある場合でも、一致する言語フォーマットが言語フォーマットとして識別される。従って、別の遷移が可能であった場合でも、次の状態を終了状態として識別する。現在の状態に対応する一致があるので、一致する言語フォーマットを言語フォーマットとして識別する。
【００５１】
データサンプルが読み出されなければ、次のデータサンプルは初期サンプルとなる。更に次のデータサンプルは固有のシーケンスを含むことができる。例えば、次のデータサンプルはシーケンス順序で選択された入力データストリームのうちの次のバイトとなり得る。しかしながら、次のデータサンプルは次のシーケンスデータサンプルでなくてもよい。
【００５２】
１０における次のデータサンプルの読み出しは種々の方法で実施できる。例えば読み出しは入力データサンプルの一部分を記憶するバッファへアクセスすることによってもできる。これとは異なり、読み出しは入力データストリームを読み出す予備的読み出しプロセスからデータをリクエストするプロセスでもよい。上記のように、次のデータサンプルは所望する任意のサイズを有することができる。更に次のデータサンプルのサイズは、読み出しごとに異なっていてもよい。更に、所望するデータサンプルのサイズは１バイト、１ワードまたはその他のありふれたサイズでもよいが、入力ストリームから読み出されるデータは所望するように、より大きいブロック内にあってもよい。例えば５１２バイトのブロック内の入力ストリームからデータを読み出すことがより効率的であり得る。１０におけるデータサンプルの読み出しは、５１２バイトのブロックを記憶するバッファから行うことができる。
【００５３】
予備的読み出しプロセスによって言語フォーマットを決定するための方法を開始することができる。特に予備的読み出しプロセスによって、データサンプルの読み出しを開始することもできる。これとは異なり、データサンプルの読み出しは予備的読み出しプロセスからのデータをリクエストする現在実行中のプロセスでもよい。追加のデータサンプルが読み出される際に、最後に読み出されたデータサンプルの後で、追加データのための予備的読み出しプロセスをリクエストすることができる。
【００５４】
別の実施例では、１６で次の状態に遷移した後に、現在の状態が１１で一致する言語フォーマットを示しているかどうかを判断する。一致する言語フォーマットがある場合、１８にて、一致する言語フォーマットを言語フォーマットとして識別する。こうして、一致する言語フォーマットを見つけることができ、更に現在の状態は、別の潜在的な次の状態を経過した、別の可能な一致があることを表示できる。この一致する言語フォーマットは１８にて言語フォーマットとして識別される。
【００５５】
上述の実施例を、図４における動作１１を点線を使って表示する。かかる点線および他の図面で使用される同様な点線は、他の種々の実施例またはこれら実施例の組み合わせ内に含まれる選択的動作を示す。
【００５６】
これとは異なり、一致する言語フォーマットがあった場合でも、次の可能な状態と比較するために、次のデータサンプルを読み出すことができる。状態マシンが進行するにつれ、更に別のデータサンプルを読み出すことができる。しかしながら、別の一致する言語フォーマットを見つけることができないことがある。かかるケースでは、最初に一致する言語フォーマットを見つけた後に読み出された更なるデータサンプルは、実際に最初に一致した言語フォーマット内にフォーマットされたデータの一部であり得る。従って、他に何か一致する言語フォーマットが存在するかどうかを判断するために読み出された追加のデータサンプルを、言語フォーマットに対応するデータの他の部分と共に処理するようにプッシュバックできる。この結果、一致する言語フォーマットにおけるデータを解釈するために、そのデータサンプルを利用できる。
【００５７】
図５は、図４内で言語フォーマットをどのように識別するかを示すフローチャートである。２０において、最新の状態を決定する。現在の状態および一致する言語フォーマットを含む前の状態から、最新の状態を選択する。上記のように、現在の状態は対応する言語フォーマットの一致を有することができる。その場合、現在の状態は最新の状態として決定される。このように、２４において、現在の状態の一致する言語フォーマットを言語フォーマットとして選択する。
【００５８】
これとは異なり、前の一致する言語フォーマットがあるかどうかを判断するために、前の状態を検査できる。例えば１つのフォーマットが第２フォーマットのシグネチャーの最初の部分に等しいシグネチャーを有する２つの言語フォーマットを検討する。状態マシンが最初の言語フォーマットのシグネチャーを検出すれば、一致したとされる。しかしながら、第２言語フォーマットのシグネチャーは第１言語フォーマットシグネチャーの全体を含むので、かかる一致はまだ決定的ではない。従って、暫定的な一致が表示され、状態マシンは第２言語フォーマットシグネチャーの一致の判断を試みるように進む。
【００５９】
第２言語フォーマットと一致がとれた場合、その言語フォーマットを選択できる。しかしながら、一致がとれない場合、状態マシンは一致、すなわちこの場合、最初の言語フォーマットシグネチャーとの一致がとれた最新の状態に戻る。その状態は、一致した最新の状態であるので、その一致する言語フォーマットを言語フォーマットとして選択する。
【００６０】
しかしながら、一致する最新の状態が見つからない場合、２６のように、言語フォーマットを非決定的であると判断する。かかる場合、一致する言語フォーマットを生じさせるような現在または前の状態はない。
【００６１】
図６は、別の実施例に従って、一致する言語フォーマットをどのようにトラッキングするかを示すフローチャートである。２８にて、現在の状態の一致する言語フォーマットをトラッキングする。従って、１４において、次の状態が終了状態であるとき、３０にて、最新の一致する言語フォーマットを選択できる。上記のように、前の状態から直接情報を得ることなく、３０におけるかかる選択を行うことができる。
【００６２】
一致する言語フォーマットのトラッキングを種々の方法で実行できる。例えばスタックの上に一致した言語フォーマットを置くことができる。こうして多数の一致する言語フォーマットが見つかった場合、スタック上に最後に置かれた一致する言語フォーマットを一致する言語フォーマットとして選択できる。
【００６３】
これとは異なり、一致する言語フォーマットを有する状態に達したときに、一致している言語フォーマットのポインタを変更してもよい。このポインタは非決定的な一致を示すように初期化できる。次に、状態が一致する言語フォーマットを含むたびにポインタを更新する。終了状態に達した後に、ポインタは一致する言語フォーマットを表示する。一致する言語フォーマットが見つからない場合、ポインタは言語フォーマットを非決定的であると表示する。２８にて、一致する言語フォーマットをトラッキングするかかる任意の技術を使用できる。
【００６４】
図４を参照すると、言語フォーマットを決定した後に、言語フォーマットに対応するコールバックを３２で実行できる。特定の言語フォーマット内には、言語フォーマット固有のデータが存在し得る。かかるデータは言語フォーマットのバージョンの表示、データストリーム内で使用されているエンコーディング、またはその他のフォーマット固有のデータを含むことができる。かかるエンコーディングとして、暗号化フォーマット、圧縮フォーマットまたはデータの他のエンコーディングを挙げることができる。この情報は、かかる情報を必要とするどの処理でも利用させることができる。３２において、かかる言語フォーマット固有のデータを読み出し、解釈するために、言語フォーマット固有のコールバック機能を実行できる。３２におけるかかるコールブック機能の実行を可能にするために、言語決定プロセスによりコールバック機能へのポインタをリターンさせることができる。
【００６５】
１８において言語フォーマットを識別した後に、１９にて入力データストリームを所望するようにレンダリングできる。言語フォーマットの知識を用い、言語フォーマットに従ってデータをレンダリングできる。このレンダリングはデータの任意の表示とすることができる。例えばデータのプリントはレンダリングであり得る。更にデータを別のフォーマットに変換することもレンダリングで有り得る。かかる変換は、例えば処理コマンドまたはターゲット画像形成デバイスに適したデバイス固有のコマンドのような追加データを追加することも含まれる。例えば上記実施例を実現するデバイスは、普及している画像形成フォーマットをレンダリングすることができないレガシー（前世代の）画像形成デバイスのためのフロントエンドとすることができる。このデバイスは入力データストリームを、レガシー画像形成デバイスによって取り込みできるフォーマットに処理することができ、レガシーデバイスを制御するための適当なコマンドを含むことができる。
【００６６】
上記のように、データサンプルを読み出し、言語シグネチャーと比較する。しかしながら、それ以上データサンプルを利用できない場合、状態マシンが終了状態に達していなくても、状態マシンは言語が非決定的であることを表示できる。
【００６７】
データストリームは入力データストリーム内の追加データを処理することを含むこともある。例えば入力データストリームは例えばエスケープシーケンス、特定のコマンド、または画像データに先行するその他のメタデータのような先行データを有することができる。図４を参照すると、言語フォーマットの決定を補助するために、３４において入力データストリームから、かかる先行データが分離される。３４において種々の方法でかかる先行データを分離することができる。
【００６８】
図７は、別の実施例において、先行データブロックをどのように識別し、スキップするかを示すフローチャートである。３６において、先行データブロックのフォーマットを識別し、３８において、先行データブロックをスキップする。
【００６９】
例えば先行データの既知のフォーマットに対するテストを実行できる。例えばユニバーサルイグジット言語（ＵＥＬ）シーケンスは、エスケープキャラクタ（例えば0x1Bの１６進値）と、それに続く特定のバイトシーケンス（例えば%-12345X）を含むことができる。このプロセスは、エスケープキャラクタを見つけるためにデータサンプルをチェックする。見つかった場合、プロセスはＵＥＬを確認するために、予想される追加バイトのバイトサンプルを読み出す。かかるＵＥＬが見つかった場合、後で使用するためにこれを記録する。ＵＥＬはデータストリームから取り除かれる。
【００７０】
一部の先行データは、可変長とすることができる。特にマークアップ言語フォーマット、例えば拡張可能なマークアップ言語（ＸＭＬ）は要素を記述するタグを含む。例えばオープニングの「<body>」タグの後には最終的にクロージングの「</body>」タグが続いていなければならない。しかしながら、介在するデータの長さはオープニングタグから決定できなくてもよい。３６において、特定のフォーマットを識別することにより、オープニングのタグとクロージングのタグとの間のデータを３８でスキップできる。この例では、クロージングの「</body>」タグを含めそれ以前のデータをスキップする。
【００７１】
ＸＭＬを一例として使用したが、タグ間または他の識別子との間のデータ長を可変とできるフォーマットもある。かかるフォーマットは特定のデータブロックの終了を表示する対応するターミネータを有することができる。３６におけるフォーマットの識別によって、フォーマットに対応する適切なターミネータを探すことにより、先行データブロックをスキップすることが可能となる。
【００７２】
データストリームからかかる先行データを分離した後に、上記状態マシンは言語フォーマットの識別まで進むことができる。
【００７３】
あるポイントにおいて、予想される先行データのフォーマットの認識ができなかった場合、制御フローは先行データのフォーマットを決定しようと試みたときに使用した任意の読み出しバイトを読み出しプロセスに戻すことができる。認識されなかったデータは、後で、状態マシン、例えば上記入力データストリームの言語フォーマットを認識するための状態マシンの別の状況で使用されることになるかもしれない。
【００７４】
入力データストリームの言語フォーマットを決定するのと同じように、同様な状態マシンを使用して、先行データを処理できる。言語フォーマットと同じように、先行データのアイデンティティまたはフォーマットは既知でないことがある。かかる状態マシンを使用し、読み出したデータサンプルと先行データフォーマットのシグネチャーとを比較することにより、先行データのフォーマットを発見できる。従って、このように先行データを処理できる。
【００７５】
先行データを分離するのに使用する方法にかかわらず、何らかの先行データが後の処理のために表示される。後の処理のためのかかる表示は、先行データを記憶すること、先行データを参照すること、先行データに対応するフラグをセットすること、などで構成される。例えばＰＪＬコマンドは、対応するプリントジョブのためのペーパーサイズを変更する。言語フォーマットを認識した後に、３９でＰＪＬコマンドが適正に処理される。しかしながら、入力データストリームの言語フォーマットが認識されない場合、ＰＪＬコマンドを画像形成デバイスに加えなくてもよい。
【００７６】
図７を参照する。４０において、先行データブロックの識別されたフォーマットに対応するコールバック機能が実行される。上記のように、言語フォーマットは対応するコールバック機能を有することができる。同様に、先行データフォーマットは対応するコールバック機能を有することができる。例えば上記のように、ＸＭＬタグが見つかった場合、対応するクロージングタグを探すために、コールバックが実行される。このように、コールバック機能は、ＸＭＬデータがスキップされるように、データストリーム内のロケーションをＸＭＬデータを越えてリターンさせるのに使うことができる。従って、４０におけるコールバック機能の実行は、３８における先行データをスキップするための置き換え機能とすることができる。更に、コールバック機能は対応する先行データを適正に処理することができる。
【００７７】
上記のように、言語フォーマットに関する上記状態マシンを使って先行データの識別を実行できる。更に、先行データの処理および言語フォーマットの識別の双方のために同じ状態マシンを使用できる。例えば入力データストリーム内のデータの言語フォーマットと先行データの双方は、同一視できるシグネチャーを有することができる。従って、状態マシンは一致するシグネチャーが見つかるまで、入力データストリームを分析する。
【００７８】
一旦シグネチャーが見つかると、適切なコールバック機能を実行できる。かかるコールバック機能はデータを適正に処理する。例えば、画像形成デバイスのためのセットアップコマンドを含む先行データのブロックのためのコールバックは、画像形成デバイスにコマンドを発行することができる。識別された言語フォーマットのためのコールバックはデータを画像形成デバイスに適正に引き渡すことができる。従って、シグネチャーの一致後、タイプまたはフォーマットにかかわらず、データの各ブロックは適切に処理されることになる。処理後、コールバック機能は先行データブロックの後の入力データストリームの現在の位置を有する状態マシンに処理を返すことができる。
【００７９】
別の実施例は、４２における先行データブロックに対応する要求条件を検証し、これら条件が満たされない場合、４３において、エラーを表示することを含む。先行データの一部のフォーマットは必要条件または要求条件を有する。例えばＰＪＬコマンドにはＵＥＬバイトシーケンスが先行しなければならない。データストリーム内にＵＥＬバイトシーケンスが生じなかった場合、４２においてＰＪＬコマンドの要求条件は検証されない。従って、４３においてエラーが表示される。
【００８０】
図８は、別の実施例に従い、言語フォーマットをどのように認識するかを示すフローチャートである。５０において、入力ストリームのデータサンプルを読み出し、５２において、データサンプルに応じて、潜在的な言語フォーマットの組を更新し、５４において、セット内に１つの潜在的な言語フォーマットが残っているか、または全く残っていないかを判断する。セット内に２つ以上の潜在的な言語フォーマットがある場合、５０にて、別のデータサンプルを読み出し、残っている潜在的言語フォーマットを狭める。こうしてデータサンプルに応じて、潜在的言語フォーマットの組を１つまたは０まで減少させる。
【００８１】
セット内に全く言語フォーマットが残っていない場合、セットからすべての潜在的言語フォーマットが除かれたことになる。こうして、６０においてフォーマットが非決定的として表示される。１つの言語フォーマットが残っている場合、５６にてその言語フォーマットの言語フォーマットシグネチャーを検証する。潜在的言語フォーマットの組が１つまで減少しても、先行データサンプルが残っている言語フォーマットの言語フォーマットシグネチャーと完全に一致しないことがあり得る。５６における検証は、残っている言語フォーマットの言語フォーマットシグネチャーを検証するのに必要な任意の追加データサンプルをチェックする。
【００８２】
図９は、潜在的言語フォーマットの組をどのように変更するかを示す一例である。図８および９を参照する。初期セット８０は４つの潜在的言語フォーマットを示す。初期セット８０は、利用できるすべての潜在的言語フォーマットを含むが、それらすべてを含む必要はない。更に初期セット８０を固定する必要はない。例えば初期セット８０の言語フォーマットを追加したり、除去するようにセットに対してその後更新または改訂を行うことができる。
【００８３】
この例では、読み出される最初のデータサンプルは、「％」バイトである。従って、矢印８６は５２における初期セット８０の更新されたセット８２への更新を示す。セット内には２つの潜在的言語フォーマットが残っているので、矢印８８が示す「Ｐ」のデータサンプルに応答じて、５２において再びセットを更新する。
【００８４】
更新されたセット８４では、セット内には１つだけの潜在的言語フォーマット、すなわち「ＰＤＦ」だけが残っている。しかしながら、言語シグネチャーフラグメント「％Ｐ」しか一致していないので、５６において言語フォーマットシグネチャーを検証するのに、残りの言語シグネチャーフラグメント「ＤＦ」が一致していなければならない。５８における検証に応じて、言語フォーマットを識別することができる。
【００８５】
別の例では、上で述べたように、第２言語フォーマットシグネチャー内に最初の言語フォーマットシグネチャー全体が含まれ得る。従って、セット内に２つの潜在的言語フォーマット、すなわち一致した第１言語フォーマットと、検証されない残留シグネチャーフラグメントを有する第２言語フォーマットが残るまでセットを更新できる。５２におけるセットの更新は、その後に一致する言語フォーマットが見つかった場合に、セットから一致する言語フォーマットを除くことを含むことができる。従って、本例では、その後のデータフォーマットが第２言語フォーマットシグネチャーとの一致を表示する場合、一致した第１言語フォーマットをセットから除く。従って、５６で検証し、５８で識別すべきセット内に、１つの言語フォーマットだけが残る。上記とは異なり、第２言語フォーマットシグネチャーが見つからなかった場合、セットから第２言語フォーマットを除き、５６で検証し、５８で識別すべきセット内に第１言語フォーマットを残す。
【００８６】
上で述べたように、一旦言語フォーマットが識別されると、関連するコールバック機能を実行できる。図８に示される実施例では、５８において、一致する言語フォーマットを識別できる。次に６２において、対応するコールバック機能を実行できる。
【００８７】
次のデータサンプルの読み出しは、次のデータサンプルを順次読み出すことを含むことができる。例えばバイトを順次読み出しできる。図９を参照すると、「％」を示すバイトをまず読み出し、次に「Ｐ」を示すバイトを読み出す。データサンプルを順次読み出し、それに応じて潜在的な言語フォーマットのセットを更新することにより、言語フォーマットを決定するためにデータストリームの特定のバイトを１回読み出すだけでよい。
【００８８】
図１０は、図８において潜在的な言語フォーマットのセットをどのように更新するかを示すフローチャートである。５３において、データサンプルと対応する言語シグネチャーフラグメントとを比較する。５５において、一致するシグネチャーフラグメントを有する潜在的言語フォーマットを選択し、セット内に残す。
【００８９】
比較はデータサンプルと対応する全ての言語シグネチャーフラグメントとの比較とすることができるが、そのような比較でなくてもよい。例えばセット内の多数の潜在的言語フォーマットに共通する言語フォーマットとの比較が１回だけ行われる。上記のように、ＰＳフォーマットとＰＤＦフォーマットの双方は、最初の言語フラグメントとして「％」キャラクタを含んでいた。ＰＳとＰＤＦの双方が潜在的言語フォーマットとして残るべきかどうかを判断するために、言語シグネチャーフラグメント「％」とデータサンプルとの比較を行う。従って、この比較から、５２における更新中に５５においてセット内に残すために、データサンプルに一致する言語シグネチャーフラグメントを含む潜在的言語フォーマットを選択する。
【００９０】
更に、上記方法はいずれも、マシン内で実行したときに、マシンにその方法を実行させるマシンで読み取り可能な媒体内に包含された、マシンで読み取り可能なコードにより成る物品により実行される。マシンは、コードを実行できる任意のデバイスまたはシステム、例えば汎用コンピュータ、アプリケーション専用集積回路、プログラマブルロジックデバイス、デジタル信号プロセッサなどでよい。例えば図１のコンピュータデバイス１１０は、メモリ１１６内に記憶されたファームウェア、コードまたは他のデータ１０５により制御される。コードおよびデータ１０５は、図１ではメモリ１１６に記憶されているように示されているが、これらコードおよびデータ１０５は他の記憶デバイス、例えば大容量記憶デバイス１２６、ネットワーク１３８を介して取り付けられた他のコンピュータデバイス１３６または同等のデバイスに記憶してもよい。
【００９１】
実施例は１つ以上のコンピュータで読み取り可能なメディアを含む。各メディアはデータ構造、オブジェクト、プログラム、ルーチンまたは例えば種々の異なる機能を実行できる汎用コンピュータに対応するシステム、または限られた数の機能を実行できる特殊用途のコンピュータに対応するシステムによってアクセスされる他のプログラムモジュールを含むマシンで読み取り可能なコードを含むことができるし、または含むように構成できる。マシンで読み取り可能なコードは、処理システムに特定の機能あるいは機能群を実行させる。
【００９２】
更に、コンピュータで読み取り可能なメディアの例として、ランダムアクセスメモリ（ＲＡＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、プログラマブルリードオンリーメモリ（ＰＲＯＭ）、消去可能なプログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、取り外し自在な記憶装置（例えばＵＳＢサムドライブ）、または処理システムによってアクセスできるデータまたは実行可能な命令を提供できる他の任意のデバイスまたはコンポーネントを挙げることができる。
【００９３】
更に、マシンで読み取り可能なコードは、種々のプロセッサまたはコードを実行できる他の計算デバイスのためのコードを含むことができる。従って、マシンで読み取り可能なコードとして、プロセッサ固有のコードおよびプログラマブルロジックデバイスのコンフィギュレーションデータのようなコードを含むことができる。従って、上記のように、入力データデバイス内の言語フォーマットを識別する能力を有するが、この能力がデバイス内では実行されないデバイスを製造できる。しかしながら、ソフトウェア、ファームウェアまたは他のコードにせよ、その後の更新または後付けにより、デバイス内で機能させることができる。
【００９４】
更に、デバイスの外部のサービスとして、言語フォーマット識別子を手段として与えることができる。例えば画像形成デバイスの外部のプロセッサまたはシステムで、マシンによって読み取り可能なコードを実行してもよい。識別された言語フォーマットは、この外部システムから画像形成デバイスへ伝送される。
【００９５】
別の実施例は、言語フォーマットを識別するための装置を含む。上記方法は、上記コンピュータデバイス１１０のような装置で実行することができる。更にコンピュータデバイス１１０は汎用コンピュータまたは特殊コンピュータ、もしくはかかるコンピュータの組み合わせとすることができる。例えばコンピュータデバイス１１０はプリンタ、多機能周辺機器（ＭＦＰ）、スキャナー、ファクシミリ、電子ホワイトボード、ディスプレイモニタ、タブレットＰＣ、ドキュメントサーバー、汎用コンピュータ、特殊コンピュータ、パソコン、ノートブックコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）またはその他のハンドヘルドデバイス、ワークステーション、ミニコンピュータ、メインフレーム、スーパーコンピュータ、マルチプロセッサシステム、ネットワークコンピュータ、プロセッサを用いた民生電子装置または同等品とすることができる。
【００９６】
上記実施例は、種々のフォーマットで動作を実行できる任意のプロセスに対して使用できる。例えば、かかる実施例はファクシミリ送受信、スキャニング、コピー、ファイリング、変換、パブリシングまたは同等な用途で使用できる。
【００９７】
以上で、データを解読する目的で言語フォーマットを識別することを参照して、実施例について説明したが、これら実施例は任意の目的、例えば解読に先立つ予備的処理段階でも使用できる。例えば予備的段階はボーダー、ロゴ、バナーまたは他の任意の追加データを追加できる。言語フォーマットを識別することにより、追加データを同じフォーマットで追加できる。
【００９８】
以上で、方法の特定の実施例の一部として特定のプロセスについて説明したが、かかるプロセスは所望するように他の実施例と組み合わせてもよい。
【００９９】
以上で、特定の実施例について説明したが、本発明の原理はこれら実施例だけに限定されるものでないことが理解できよう。特許請求の範囲に記載の発明の要旨から逸脱することなく、変形および変更を行うことができる。
【図面の簡単な説明】
【０１００】
【図１】一実施例に係わる言語を自動切り換えするためのシステムを示すブロック図である。
【図２】別の実施例に従い、入力データストリームの言語フォーマットをどのように認識するかを示す状態図である。
【図３】入力データストリームおよび言語シグネチャーフラグメントを示す図である。
【図４】一実施例に従い、入力データストリームの言語フォーマットをどのように認識するかを示すフローチャートである。
【図５】図４内で言語フォーマットをどのように識別するかを示すフローチャートである。
【図６】別の実施例に従い、一致した言語フォーマットをどのようにトラッキングするかを示すフローチャートである。
【図７】別の実施例に従い、前のデータブロックをどのように識別し、スキップするかを示すフローチャートである。
【図８】別の実施例に従い、言語フォーマットをどのように認識するかを示すフローチャートである。
【図９】潜在的言語フォーマットのセットをどのように変更するかを示す一例である。
【図１０】図８において、潜在的言語フォーマットのセットをどのように更新するかを示すフローチャートである。
【符号の説明】
【０１０１】
１１０…コンピュータデバイス、１１２…システムバス、１１４…処理システム、１１６…メモリ、１１８…デバイスインターフェース、１２０…入力インターフェース、１２２…出力インターフェース、１２４…ネットワークインターフェース、１４０…言語切り換えシステム。
【図１】
2008052698.tif 000005
【図２】
2008052698.tif 000006
【図３】
2008052698.tif 000007
【図４】
2008052698.tif 000008
【図５】
2008052698.tif 000009
【図６】
2008052698.tif 000010
【図７】
2008052698.tif 000011
【図８】
2008052698.tif 000012
【図９】
2008052698.tif 000013
【図１０】
2008052698.tif 000014