(57)【要約】【課題】本発明は、ブラウザの表示結果から取得した画像の文字認識精度を向上させる。【解決手段】本発明は、文字認識装置であって、第一倍率の表示倍率に応じたフォントサイズで１以上の文字を含む文字列を描画した第一画像を取得し、第一倍率よりも大きい第二倍率に応じたフォントサイズで文字列を描画した第二画像を取得し、第二画像に描画された文字列の各文字の文字コードを含む文字認識結果を取得し、第一画像データに描画された文字列データの改行位置を用いて、第二画像データから取得した文字認識結果の改行位置を調整する。【選択図】図１
2018072903.tif 000002
【特許請求の範囲】
【請求項１】
文字認識装置であって、
表示倍率に応じたフォントサイズで文字を描画して得た画像データを出力する描画処理を用いて、１以上の文字を含む文字列データを第一倍率で描画した画像である第一画像データを取得する第一画像取得処理と、
前記描画処理を用いて、前記文字列データを前記第一倍率よりも大きい第二倍率で描画した画像である第二画像データを取得する第二画像取得処理と、
画像に描画された文字に対応する文字コードを出力する文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字コードを含む文字認識結果を取得する認識結果取得処理と、
前記第一画像データに描画された前記文字列データの改行位置を用いて、前記第二画像データから取得した前記文字認識結果の改行位置を調整する改行位置判定処理と、
を実行する処理手段、
を備えることを特徴とする文字認識装置。
【請求項２】
請求項１に記載の文字認識装置であって、
前記処理手段は、
前記第一画像データ及び前記第二画像データの各々から、第一方向に沿って１以上の文字が描画された領域を含む１以上の行画像データを取得する行画像取得処理と、
前記第一画像データから取得された前記１以上の行画像データの各々から、前記第一方向に沿った文字画素の特徴量である第一特徴量を取得する第一特徴量取得処理と、
前記第二画像データから取得された前記１以上の行画像データの各々から、前記第一方向に沿った文字画素の特徴量である第二特徴量を取得する第二特徴量取得処理と、
前記第一画像データに関する前記第一特徴量と、前記第二画像データに関する前記第二特徴量とを比較し、前記第一画像データと前記第二画像データとの前記第一方向上の文字画素の対応関係を取得する対応関係取得処理と、
を実行するように構成され、
前記改行位置判定処理は、前記対応関係に基づいて、前記第一画像データから取得した前記１以上の行画像データの各々の前記第一方向における終端の位置に対応する、前記第二画像データ上の前記第一方向における位置を特定し、前記特定した位置を用いて前記文字認識結果における改行位置を調整する処理を含む、
ことを特徴とする文字認識装置。
【請求項３】
請求項２に記載の文字認識装置であって、
前記処理手段は、前記第一画像データと前記第二画像データとの比率に基づいて変換率を判定する変換率判定処理を実行するように構成され、
前記処理手段は、前記第一特徴量取得処理において前記第一特徴量を取得する際に、前記変換率に基づいて前記第一方向及び又は前記第一方向と直交する第二方向に拡大された文字画素の特徴量である前記第一特徴量を取得する、
ことを特徴とする文字認識装置。
【請求項４】
請求項３に記載の文字認識装置であって、
前記処理手段は、前記変換率判定処理において、前記第二倍率と前記第一倍率との比率に基づき、前記変換率を定める、
ことを特徴とする文字認識装置。
【請求項５】
請求項３に記載の文字認識装置であって、
前記処理手段は、前記変換率判定処理において、前記第二画像に関する前記１以上の行画像データの高さと、前記第一画像に関する前記１以上の行画像データの高さとの比率に基づき、前記変換率を定める、
ことを特徴とする文字認識装置。
【請求項６】
請求項３乃至５の何れかに記載の文字認識装置であって、
前記処理手段は、前記認識結果取得処理において、前記文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字画素が配置された領域を示す文字枠を取得し、
前記処理手段は、前記対応関係取得処理により取得した前記対応関係と、前記変換率判定処理により取得した前記変換率とに基づき、前記取得した文字枠の位置を、前記第一画像データ上の位置に変換する位置変換処理を実行するように構成される、
ことを特徴とする文字認識装置。
【請求項７】
請求項２乃至６の何れかに記載の文字認識装置であって、
前記処理手段は、前記第一特徴量取得処理及び前記第二特徴量取得処理において、前記１以上の行画像データの各々を、第一方向に投影した文字画素の累積値を示すヒストグラムを前記特徴量とする、
ことを特徴とする文字認識装置。
【請求項８】
文字認識方法であって、
表示倍率に応じたフォントサイズで文字を描画して得た画像データを出力する描画処理を用いて、１以上の文字を含む文字列データを第一倍率で描画した画像である第一画像データを取得する第一画像取得処理と、
前記描画処理を用いて、前記文字列データを前記第一倍率よりも大きい第二倍率で描画した画像である第二画像データを取得する第二画像取得処理と、
画像に描画された文字に対応する文字コードを出力する文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字コードを含む文字認識結果を取得する認識結果取得処理と、
前記第一画像データに描画された前記文字列データの改行位置を用いて、前記第二画像データから取得した前記文字認識結果の改行位置を調整する改行位置判定処理と、
をコンピュータが実行することを特徴とする文字認識方法。
【請求項９】
請求項８に記載の文字認識方法であって、
前記第一画像データ及び前記第二画像データの各々から、第一方向に沿って１以上の文字が描画された領域を含む１以上の行画像データを取得する行画像取得処理と、
前記第一画像データから取得された前記１以上の行画像データの各々から、前記第一方向に沿った文字画素の特徴量である第一特徴量を取得する第一特徴量取得処理と、
前記第二画像データから取得された前記１以上の行画像データの各々から、前記第一方向に沿った文字画素の特徴量である第二特徴量を取得する第二特徴量取得処理と、
前記第一画像データに関する前記第一特徴量と、前記第二画像データに関する前記第二特徴量とを比較し、前記第一画像データと前記第二画像データとの前記第一方向上の文字画素の対応関係を取得する対応関係取得処理と、
をコンピュータが実行し、
前記改行位置判定処理は、前記対応関係に基づいて、前記第一画像データから取得した前記１以上の行画像データの各々の前記第一方向における終端の位置に対応する、前記第二画像データ上の前記第一方向における位置を特定し、前記特定した位置を用いて前記文字認識結果における改行位置を調整する処理を含む、
ことを特徴とする文字認識方法。
【請求項１０】
請求項９に記載の文字認識方法であって、
前記第一画像データと前記第二画像データとの比率に基づいて変換率を判定する変換率判定処理を更に備え、
前記第一特徴量取得処理において前記第一特徴量を取得する際に、前記変換率に基づいて前記第一方向及び又は前記第一方向と直交する第二方向に拡大された文字画素の特徴量である前記第一特徴量を取得する、
ことを特徴とする文字認識方法。
【請求項１１】
請求項１０に記載の文字認識方法であって、
前記変換率判定処理において、前記第二倍率と前記第一倍率との比率に基づき、前記変換率を定める、
ことを特徴とする文字認識方法。
【請求項１２】
請求項１０に記載の文字認識方法であって、
前記変換率判定処理において、前記第二画像に関する前記１以上の行画像データの高さと、前記第一画像に関する前記１以上の行画像データの高さとの比率に基づき、前記変換率を定める、
ことを特徴とする文字認識方法。
【請求項１３】
請求項１０乃至１２の何れかに記載の文字認識方法であって、
前記認識結果取得処理は、前記文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字画素が配置された領域を示す文字枠を取得する処理を含み、
前記文字認識方法は、前記対応関係取得処理により取得した前記対応関係と、前記変換率判定処理により取得した前記変換率とに基づき、前記取得した文字枠の位置を、前記第一画像データ上の位置に変換する位置変換処理を更に備える
ことを特徴とする文字認識方法。
【請求項１４】
請求項９乃至１３の何れかに記載の文字認識方法であって、
前記第一特徴量取得処理及び前記第二特徴量取得処理において、前記１以上の行画像データの各々を、第一方向に投影した文字画素の累積値を示すヒストグラムを前記特徴量とする、
ことを特徴とする文字認識方法。
【請求項１５】
表示倍率に応じたフォントサイズで文字を描画して得た画像データを出力する描画処理を用いて、１以上の文字を含む文字列データを第一倍率で描画した画像である第一画像データを取得する第一画像取得処理と、
前記描画処理を用いて、前記文字列データを前記第一倍率よりも大きい第二倍率で描画した画像である第二画像データを取得する第二画像取得処理と、
画像に描画された文字に対応する文字コードを出力する文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字コードを含む文字認識結果を取得する認識結果取得処理と、
前記第一画像データに描画された前記文字列データの改行位置を用いて、前記第二画像データから取得した前記文字認識結果の改行位置を調整する改行位置判定処理と、
をコンピュータに実行させることを特徴とする文字認識プログラム。
【請求項１６】
請求項１５に記載の文字認識プログラムであって、
前記第一画像データ及び前記第二画像データの各々から、第一方向に沿って１以上の文字が描画された領域を含む１以上の行画像データを取得する行画像取得処理と、
前記第一画像データから取得された前記１以上の行画像データの各々から、前記第一方向に沿った文字画素の特徴量である第一特徴量を取得する第一特徴量取得処理と、
前記第二画像データから取得された前記１以上の行画像データの各々から、前記第一方向に沿った文字画素の特徴量である第二特徴量を取得する第二特徴量取得処理と、
前記第一画像データに関する前記第一特徴量と、前記第二画像データに関する前記第二特徴量とを比較し、前記第一画像データと前記第二画像データとの前記第一方向上の文字画素の対応関係を取得する対応関係取得処理と、
をコンピュータに実行させ、
前記改行位置判定処理は、前記対応関係に基づいて、前記第一画像データから取得した前記１以上の行画像データの各々の前記第一方向における終端の位置に対応する、前記第二画像データ上の前記第一方向における位置を特定し、前記特定した位置を用いて前記文字認識結果における改行位置を調整する処理を含む、
ことを特徴とする文字認識プログラム。
【請求項１７】
請求項１６に記載の文字認識プログラムであって、
前記コンピュータに、前記第一画像データと前記第二画像データとの比率に基づいて変換率を判定する変換率判定処理を実行させ、
前記第一特徴量取得処理において前記第一特徴量を取得する際に、前記変換率に基づいて前記第一方向及び又は前記第一方向と直交する第二方向に拡大された文字画素の特徴量である前記第一特徴量を取得する、
ことを特徴とする文字認識プログラム。
【請求項１８】
請求項１７に記載の文字認識プログラムであって、
前記変換率判定処理において、前記第二倍率と前記第一倍率との比率に基づき、前記変換率を定める、
ことを特徴とする文字認識プログラム。
【請求項１９】
請求項１７に記載の文字認識プログラムであって、
前記変換率判定処理において、前記第二画像に関する前記１以上の行画像データの高さと、前記第一画像に関する前記１以上の行画像データの高さとの比率に基づき、前記変換率を定める、
ことを特徴とする文字認識プログラム。
【請求項２０】
請求項１７乃至１９の何れかに記載の文字認識プログラムであって、
前記認識結果取得処理は、前記文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字画素が配置された領域を示す文字枠を取得する処理を含み、
前記コンピュータに、前記対応関係取得処理により取得した前記対応関係と、前記変換率判定処理により取得した前記変換率とに基づき、前記取得した文字枠の位置を、前記第一画像データ上の位置に変換する位置変換処理を実行させることを特徴とする文字認識プログラム。
【請求項２１】
請求項１６乃至２０の何れかに記載の文字認識プログラムであって、
前記第一特徴量取得処理及び前記第二特徴量取得処理において、前記１以上の行画像データの各々を、第一方向に投影した文字画素の累積値を示すヒストグラムを前記特徴量とする、
ことを特徴とする文字認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字認識装置、文字認識方法、文字認識プログラムに関する。
【背景技術】
【０００２】
インターネットの普及ととともに、インターネットを介して取得されるＨＴＭＬ文書を表示させるＷｅｂブラウザの種類が増加している。Ｗｅｂブラウザの種類に加え、Ｗｅｂブラウザのバージョン及びＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の違いを考慮すると多数の組み合わせが存在する。
【０００３】
しかしながら、各Ｗｅｂブラウザは、相互に描画特性が異なったり、独自の拡張機能を有していたりする。また、ＨＴＭＬに関してＷｅｂブラウザごとに解釈が異なる定義が有る。その結果、ＷｅｂブラウザごとにＨＴＭＬ文書の表示結果が異なる場合が有る。
【０００４】
そこで、各ＷｅｂブラウザによるＨＴＭＬ文書の表示結果における各ＨＴＭＬ要素の表示領域を特定し、Ｗｅｂブラウザごとに特定された表示領域を比較することで、各ＷｅｂブラウザによるＨＴＭＬ文書の表示結果について相違の有無を判定することが検討されている（例えば、特許文献１参照）。
【０００５】
また、Ｗｅｂブラウザ上の表示領域のうち、テキスト属性を有するＨＴＭＬ要素に対応する領域内から切り出した部分画像を画面キャプチャ機能により取得し、部分画像に対する文字認識の結果を用いて、文字化けなどの表示上の不具合の有無を検証する技術が提案されている（例えば、非特許文献１参照）。
【０００６】
なお、ＨＴＭＬ文書など画像やテキストが混在する複合文書を描画した文書画像から、テキスト属性を有する要素を抽出し、様々な処理を施す技術が存在する（例えば、特許文献２−４参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−３９８１５号公報
【特許文献２】特開２０１６−９９７９３号公報
【特許文献３】特開２０１５−１７０９７９号公報
【特許文献４】特開２００８−７０８３１号公報
【非特許文献】
【０００８】
【非特許文献１】田中宏、藤井勇作、瀬川英吾「HTML要素の相対位置と文字認識結果の比較に基づくWebコンテンツ表示のブラウザ問非互換性検出」（PRMU2015-169、2016年3月）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、Ｗｅｂブラウザなどの文書閲覧ソフト（以下、ブラウザと称呼する）に表示される文書から、テキスト属性を有する要素（文字列要素）を抽出し、文字列要素を描画した画素を含む文書画像に対して文字認識を行うことで一以上の文字コードを有するテキストデータを取得する技術は、様々な用途に有用である。例えば、ブラウザごとの表示結果の差異を検証するクロスブラウザチェックにおいて、各ブラウザの表示結果から文字認識で取得したテキストデータを比較することで、文字化けやレイアウトの不具合などの判別に利用できる。また、例えば、ブラウザの表示結果から文字認識で取得したテキストデータを用いて音声合成を行うことで、コンピュータによる文書の読み上げサービスを実現することができる。
【００１０】
ところが、ブラウザの表示結果から画面キャプチャ機能により文書画像を取得する場合、文字のフォントサイズによっては解像度が低くなり、正しく文字を認識することが困難という問題がある。この問題を解決するために、例えば、表示倍率を拡大するようにブラウザを設定し、拡大された表示倍率に応じたフォントサイズのデータを用いてレンダリング処理をブラウザに実行させることで、文書画像の解像度を増加させて文字認識の精度を向上させることができる。
【００１１】
しかし、ブラウザの表示倍率を拡大することで、文字列が配置される領域の幅に対する各文字の寸法の割合にずれが生じるなどの様々な事情に起因して、レンダリング処理において行の折り返し位置（改行位置）が変化する場合がある。そのため、標準の表示倍率での表示を想定して設計された文書のレイアウトとは異なる位置において改行コードが文字認識の結果に挿入され、文字認識の精度が低下するという問題がある。
【００１２】
そこで、一側面では、ブラウザの表示画面から画面キャプチャ機能により取得した文書画像からの文字認識の精度を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
文字認識装置であって、表示倍率に応じたフォントサイズで文字を描画して得た画像データを出力する描画処理を用いて、１以上の文字を含む文字列データを第一倍率で描画した画像である第一画像データを取得する第一画像取得処理と、前記描画処理を用いて、前記文字列データを前記第一倍率よりも大きい第二倍率で描画した画像である第二画像データを取得する第二画像取得処理と、画像に描画された文字に対応する文字コードを出力する文字認識処理を用いて、前記第二画像データに描画された前記文字列データの各文字の文字コードを含む文字認識結果を取得する認識結果取得処理と、前記第一画像データに描画された前記文字列データの改行位置を用いて、前記第二画像データから取得した前記文字認識結果の改行位置を調整する改行位置判定処理と、を実行する処理手段を備えることを特徴とする文字認識装置。
【発明の効果】
【００１４】
本発明によれば、一側面では、ブラウザの表示画面から画面キャプチャ機能により取得した文書画像からの文字認識の精度を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例１に係る文字認識装置の構成の一例を示す図である。
【図２】図２は、第一方向を横方向（Ｘ軸）とした場合の第一特徴量を取得する過程の一例を説明した図（その１）である。
【図３】図３は、第一方向を横方向（Ｘ軸）とした場合の第一特徴量を取得する過程の一例を説明した図（その２）である。
【図４】図４は、第一方向を横方向（Ｘ軸）とした場合の第一特徴量を取得する過程の一例を説明した図（その３）である。
【図５】図５は、実施例１に係る文字認識処理の流れの一例を示す図である。
【図６】図６は、第一画像の一例を示す図である。
【図７】図７は、第二画像の一例を示す図である。
【図８】図８は、第二画像データから得られた文字枠の一例を示す図である。
【図９】図９は、認識結果場情報のデータ構造の一例を示す図である。
【図１０】図１０は、第一画像データから行画像データを取得する過程の一例を説明した図である。
【図１１】図１１は、行領域情報のデータ構造の一例を示す図である。
【図１２】図１２は、第一画像データから取得した第一特徴量の一例を示す図（その１）である。
【図１３】図１３は、第一特徴量情報のデータ構造の一例を示す図（その１）である。
【図１４】図１４は、第一画像データから取得した第一特徴量の一例を示す図（その２）である。
【図１５】図１５は、第一特徴量情報のデータ構造の一例を示す図（その２）である。
【図１６】図１６は、第二画像データから取得した第二特徴量の一例を示す図である。
【図１７】図１７は、第一特徴量と第二特徴量とのＤＰマッチングの処理過程の一例を示す図である。
【図１８】図１８は、行画像データの部分領域毎に取得した特徴量を用いたＤＰマッチングの処理過程の一例を示す図である。
【図１９】図１９は、ＤＰマッチング処理による最短経路上の格子点と第一画像上の行要素の終端位置との対応関係の一例を示す図である。
【図２０】図２０は、ＤＰマッチング処理により得られた最短経路上の格子点を介して第一画像と第二画像との画素列の対応関係を特定する処理の一例を示した図（その１）である。
【図２１】図２１は、改行位置が変換された後の文字認識結果を表す認識結果情報のデータ構造の一例を示す図である。
【図２２】図２２は、実施例２に係る文字認識装置の構成の一例を示す図である。
【図２３】図２３は、実施例２に係る位置変換処理の流れの一例を示す図である。
【図２４】図２４は、ＤＰマッチング処理により得られた最短経路上の格子点を介して第一画像と第二画像との画素列の対応関係を特定する処理の一例を示した図（その２）である。
【図２５】図２５は、実施例２に係る位置変換処理において用いられるＹ値差分の一例を示す図である。
【図２６】図２６は、実施例３に係る検証装置の構成の一例を示す図。
【図２７】図２７は、実施例３に係る検証処理の流れの一例を示す図。
【発明を実施するための形態】
【００１６】
以下、図面を参照して実施形態について説明する。実施形態の構成は例示であり、実施形態の構成に限定されない。
【００１７】
＜実施例１＞
図１は、実施例１に係る文字認識装置１００の構成の一例を示す図である。図１に示す文字認識装置１００は、プロセッサ１、記憶装置２、表示装置３、入力装置４、通信装置５などを備える。これらの各機器は、バスなどの有線あるいは無線によって通信可能に接続されており、一つのボード上に実装されてもよいし、複数のボード上に別々に実装されてもよい。また、各機器は、一つの筐体に収容されていてもよいし、全部あるいは一部の機器を独立した筐体に収容してもよい。
【００１８】
プロセッサ１は、記憶装置２に格納された文字認識プログラム２１、ブラウザ２２、画像処理プログラム２３などの各種プログラムを実行することで、実施例１に係る文字認識装置１００の動作を実現する演算装置である。このようなプロセッサ１として、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などが挙げられる。プロセッサ１は、本実施例１に係る各種処理を実行する処理手段の一例である。なお、プロセッサ１は、２以上のコアを含むマルチコアプロセッサであっても良い。
【００１９】
記憶装置２は、プロセッサ１で実行される文字認識プログラム２１、ブラウザ２２、画像処理プログラム２３などの各種プログラムや、プロセッサ１が処理する際に参照され又は書き込まれるデータなどを記憶保持する装置であり、不揮発性記憶装置と揮発性記憶装置の両方あるいは一方を少なくとも含んで構成される。たとえば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＳＳＤ（Solid State Drive）、ＨＤＤ（Hard Disk Drive）などが挙げられる。本実施例において、記憶装置２は、主記憶装置及び補助記憶装置などの各種記憶装置を総称したものである。
【００２０】
表示装置３は、プロセッサ１が実行する文字認識プログラム２１の処理結果などを表示するように構成される。たとえば、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（ＯＥＬ：Organic Electro Luminescence）ディスプレイ、有機発光ダイオード（ＯＬＥＤ：Organic Light Emitting Diode）ディスプレイなどが挙げられる。
【００２１】
入力装置４は、利用者による入力操作に応じた入力信号を、プロセッサ１へ出力するように構成される。入力装置４の例として、平板上のセンサを指でなぞることで位置を入力できるタッチパッド、キーボード、マウス、あるいはこれらの組み合わせなどが挙げられる。なお、入力装置４と表示装置３とを組み合わせたタッチパネルを用いても良い。入力装置４は、利用者の操作に応じて、例えば、本実施例１に係る文字認識プログラム２１をプロセッサ１に実行開始させるための入力信号を、プロセッサ１に供給するように構成される。
【００２２】
通信装置５は、通信ネットワークに接続するための有線又は無線のインタフェースとして用いられ、例えば、ＯＳＩ（Open Systems Interconnection）参照モデルにおける物理層などを用いて通信するための電子的な回路を実装している。通信装置５は、３ＧＰＰ（3rd Generation Partnership Project）が策定する無線通信規格（例えば、ＬＴＥ（Long Term Evolution）など）に準拠した無線通信装置であってもよい。通信装置５は、例えば、プロセッサ１からの指示に基づき通信ネットワークを介してＷｅｂサーバに接続し、Ｗｅｂサーバから受信したＨＴＭＬ文書をプロセッサ１に供給するように構成される。
【００２３】
記憶装置２に格納される文字認識プログラム２１、ブラウザ２２、画像処理プログラム２３などの各種プログラムは、記憶装置２を構成するＲＡＭなどのメモリに実行可能に展開されることで、プロセッサ１により実行される。プロセッサ１が文字認識プログラム２１を実行することにより、第一画像取得処理２１０、第二画像取得処理２１１、認識結果取得処理２１２、行画像取得処理２１３、第一特徴量取得処理２１４、第二特徴量取得処理２１５、対応関係取得処理２１６、改行位置判定処理２１７などを実行するハードウェア回路が実現される。同様に、プロセッサ１がブラウザ２２及び画像処理プログラム２３を実行することにより、描画処理２２１及び文字認識処理２３１などを実行するハードウェア回路が実現される。別言すると、プロセッサ１は、文字認識プログラム２１、ブラウザ２２、画像処理プログラム２３などの各種プログラムを実行することにより、各種処理を実行するハードウェア回路に適宜変換される。
【００２４】
文字認識プログラム２１は、ブラウザの表示画面から文字認識の結果を取得するようにプロセッサ１を動作させるプログラムであり、第一画像取得処理２１０、第二画像取得処理２１１、認識結果取得処理２１２、行画像取得処理２１３、第一特徴量取得処理２１４、第二特徴量取得処理２１５、対応関係取得処理２１６、改行位置判定処理２１７などをプロセッサ１に実行させるためのプログラム部分を含む。文字認識プログラム２１をプロセッサ１で実行させることにより、ブラウザ２２上の表示領域に第一倍率よりも大きい第二倍率で描画された第二画像から、画像処理プログラム２３の文字認識処理２３１を用いて文字認識結果を取得し、ブラウザ２２上の表示領域に第一倍率で描画された第一画像における行の折り返し位置に対応する箇所の文字認識結果に改行コードを挿入するように、プロセッサ１を動作させる。
【００２５】
ブラウザ２２は、ＨＴＭＬファイルをＷｅｂサーバなどから取得し、ＨＴＭＬファイルの内容に従って文字や画像などを描画したＨＴＭＬ文書を生成するようにプロセッサ１を動作させるプログラムであり、描画処理２２１などをプロセッサ１に実行させるためのプログラム部分を含む。ブラウザ２２をプロセッサ１で実行させることにより、ＨＴＭＬ文書などの文書データをＷｅｂサーバなどのストレージから取得し、取得した文書データに記述された内容に従って任意の表示倍率に応じたフォントサイズで文字などを描画するよう、プロセッサ１を動作させる。
【００２６】
画像処理プログラム２３は、画像に含まれる文字画素に対して文字認識処理を実行して文字認識の結果（文字コードなど）を出力するようにプロセッサ１を動作させるプログラムであり、文字認識処理２３１などをプロセッサ１に実行させるためのプログラム部分を含む。画像処理プログラム２３をプロセッサ１で実行させることにより、文字が描画された画像に対してＯＣＲ（Optical Character Recognition）処理を実行し、画像に描画された各文字に対応する文字コードの列を出力するように、プロセッサ１を動作させる。
【００２７】
第一画像取得処理２１０は、ブラウザ２２が有する描画処理２２１を用いて、１以上の文字を含む文字列データ（単に「文字列」と称呼する場合もある）を第一倍率で描画した画像である第一画像データ（単に「第一画像」と称呼する場合もある）を取得する処理を、プロセッサ１に実行させるプログラムに相当する。第一倍率は、例えば、通常の表示と同じ倍率である１００％としてもよい。ブラウザ２２が有する描画処理２２１は、表示倍率に応じたフォントサイズで文字を描画して得た画像データを出力する処理をプロセッサ１に実行させるプログラムに相当する。描画処理２２１として、例えば、Ｗｅｂブラウザに搭載されているＨＴＭＬ（Hyper Text Markup Language）レンダリングエンジンを用いればよい。例えば、マイクロソフト社が開発するＷｅｂブラウザ「ＩｎｔｅｒｎｅｔＥｘｐｌｏｒｅｒ」（登録商標）に搭載されているＨＴＭＬレンダリングエンジン「Ｔｒｉｄｅｎｔ」や、Ｍｏｚｉｌｌａプロジェクトが開発するＷｅｂブラウザ「ＦｉｒｅＦｏｘ」（登録商標）に搭載されているＨＴＭＬレンダリングエンジン「Ｇｅｃｋｏ」などがある。第一画像取得処理２１０は、例えば、ＨＴＭＬレンダリングエンジンが第一倍率で描画したＨＴＭＬページ（ＨＴＭＬ文書）の文字領域を画面キャプチャすることで、第一画像データを取得するように構成され得る。画面キャプチャの手法として、既知の手法を用いればよい。例えば、画面キャプチャの処理は、Ｓｅｌｅｎｉｕｍ  Ｗｅｂ  Ｄｒｉｖｅｒを使用することで行われてもよい。Ｓｅｌｅｎｉｕｍ  Ｗｅｂ  Ｄｒｉｖｅｒは、Ｗｅｂブラウザの拡張機能やＯＳ（Operating System）のネイティブ機能などを利用してＷｅｂブラウザを操作する仕組みをプログラム（外部プログラムとも呼ばれる）に提供するソフトウェアであり、ＨＴＭＬ文書を表示しているＷｅｂブラウザから、その表示内容に関する様々な情報を引き出すことができる。第一画像取得処理２１０は、Ｓｅｌｅｎｉｕｍ  Ｗｅｂ  Ｄｒｉｖｅｒを用いることで、例えば、Ｗｅｂブラウザ上に表示されるＨＴＭＬ要素（例えば文字列要素）の位置や属性（例えば文字列要素であることを示す属性）を取得することができ、Ｗｅｂブラウザに第一倍率を設定してＨＴＭＬページを描画させることができる。Ｓｅｌｅｎｉｕｍ  Ｗｅｂ  Ｄｒｉｖｅｒについては、http://www.seleniumhq.org/docs/03_webdriver.jspに詳しいので参照されたい。また、Ｗｅｂ  Ｄｒｉｖｅｒの機能はＷｅｂ技術の標準化団体であるＷ３Ｃにおいて標準化作業が進められており、最新の仕様はhttps://www.w3.org/TR/webdriver/に詳しいので参照されたい。
【００２８】
第二画像取得処理２１１は、ブラウザ２２が有する描画処理２２１を用いて、上述の第一画像データで描画された文字列と同じ内容の文字列データを、第一倍率よりも大きい第二倍率で描画した画像である第二画像データ（単に「第二画像」と称呼する場合もある）を取得する処理を、プロセッサ１に実行させるプログラムに相当する。第二倍率は、例えば、第一倍率が１００％である場合、その２倍の倍率である２００％としてもよい。第二画像取得処理は、上述のＳｅｌｅｎｉｕｍ  Ｗｅｂ  Ｄｒｉｖｅｒを使用することで、Ｗｅｂブラウザ２２に第二倍率を設定してＨＴＭＬページを描画させ、第二画像データを取得するように構成され得る。
【００２９】
認識結果取得処理２１２は、画像処理プログラム２３が有する文字認識処理２３１を用いて、第二画像データから文字認識結果を取得する処理を、プロセッサ１に実行させるプログラムに相当する。ここで、文字認識結果は、第二画像データに描画された文字列データの各文字の文字コードを含む。実施例１において、認識結果取得処理２１２は、通常の表示よりも大きい倍率（第二倍率）に応じたフォントサイズで描画された文字画素を有する画像（第二画像データ）を用いて文字認識結果を取得するため、文字認識の精度を向上させることができる。ただし、第一画像と第二画像とでは、文字列が配置される領域（表示領域）の幅に対する各文字の寸法の割合にずれが生じるなどの様々な事情に起因して、改行位置が異なる場合がある。画像処理プログラム２３が有する文字認識処理２３１は、画像に描画された文字に対応する文字コードを出力する処理を、プロセッサ１に実行させるプログラムに相当する。画像処理プログラム２３が有する文字認識処理２３１として、既知のＯＣＲプログラムを用いてもよい。例えば、既知のＯＣＲプログラムの一つとして、フリーソフトウェアの「ｔｅｓｓｅｒａｃｔ−ｏｃｒ」（以下、Ｔｅｓｓｅｒａｃｔと称呼する）がある。Ｔｅｓｓｅｒａｃｔについては、https://github.com/tesseract-ocrに詳しいので参照されたい。
【００３０】
行画像取得処理２１３は、第一画像取得処理２１０により取得された第一画像データ及び第二画像取得処理２１１により取得された第二画像データの各々から、第一方向に沿って１以上の文字が描画された領域を含む１以上の行画像データ（「行画像」、「行領域」、「行要素」と称呼する場合もある）を取得する処理を、プロセッサ１に実行させるプログラムに相当する。行画像取得処理２１３は、例えば、第一方向とは直交する第二方向に投影した文字画素の累積濃度値を示すヒストグラムを生成し、累積濃度値が所定の閾値Ｔ１以上となる範囲が連続して現れる長さ（ランレングス）が所定の閾値Ｔ２以上となる領域（行領域）を行画像データとして取得するように構成することができる。閾値Ｔ１は、文字画素の濃度値とそれ以外の画素の濃度値とを区別し得る任意の値を設定すればよい。閾値Ｔ２は、表示倍率に応じたフォントサイズの文字とノイズとを区別し得る任意の値を設定すればよい。閾値Ｔ１及び閾値Ｔ２は、第一画像データの場合と第二画像データの場合とで異なる値を用いればよい。また、上述の例において、横方向をＸ軸とし縦方向をＹ軸とする２次元空間において横方向に文字列が描写された画像から行画像を取得する場合、第一方向は横方向（Ｘ軸上）であり、第二方向は縦方向（Ｙ軸上）である。別言すると、第二方向に投影した文字画素の累積濃度値を示すヒストグラムは、例えば、Ｙ軸上に投影した文字画素の累積濃度値である。すなわち、本実施例の説明において、第二方向に文字画素を投影するとは、第二方向（例えば縦方向）を規定する軸上（例えばＹ軸上）に文字画素を投影することを意味する。同様に、第一方向に文字画素を投影するとは、第一方向（例えば横方向）を規定する軸上（例えばＸ軸上）に文字画素を投影することを意味する。なお、第一方向は、書字方向が横書きの場合は横方向であり、書字方向が縦書きの場合は縦方向である。また、「行」とは、書字方向が横書きの場合は文字の横のならびを示し、書字方向が縦書きの場合は文字の縦のならびを示す。なお、「文字」には、数字や記号を含むものとする。
【００３１】
第一特徴量取得処理２１４は、行画像取得処理２１３により第一画像データから取得された１以上の行画像データの各々から、第一方向に沿った文字画素の特徴量である第一特徴量を取得する処理を、プロセッサ１に実行させるプログラムに相当する。第一特徴量取得処理２１４は、例えば、第一画像データから取得された各行画像データに含まれる各画素の濃度値を第一方向に投影して得られる累積濃度値を第一特徴量とするように構成され得る。例えば、第一方向が横方向である場合、行画像データに含まれる各画素の濃度値を縦一列に累積した値（累積濃度値）を第一特徴量としてもよい。この例において、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像の場合、第一特徴量は、縦一列にＭ個の画素の濃度値を累積して得られたＮ個の累積濃度値であってもよい。文字画素の濃度値を１としそれ以外の画素の濃度値を０とした二値画像を行画像データとして用いる場合、第一特徴量の累積濃度値は、累積された文字画素の個数と等価である。
【００３２】
図２（Ａ）乃至図２（Ｃ）を用いて、第一方向を横方向（Ｘ軸）とした場合の第一特徴量を取得する過程の一例を説明する。図２（Ａ）は、縦１６個×横１２個の画素が配置された領域Ｂ１０に、一文字の日本語の片仮名に相当する文字画素が描画された行画像の一例を示す図である。図２（Ａ）の例において、文字画素は黒色（濃度値は１）で示されており、それ以外の画素は白色（濃度値は０）で示されている。図２（Ａ）では、第一の方向に投影される画素列Ｂ１１乃至画素列Ｂ２２が図示されており、各画素列はＸ軸上の座標値が同じ値を有する画素の集合で構成される。
【００３３】
図２（Ｂ）は、図２（Ａ）に示す領域Ｂ１０と同じ文字画素を有する領域Ｂ３０を、説明の便宜上、画素列ごとに分解して図示したものである。図２（Ｂ）に示す画素列Ｂ３１乃至画素列Ｂ４２は、それぞれ、図２（Ａ）に示す画素列Ｂ１１乃至Ｂ２２に相当する。図２（Ｃ）は、図２（Ｂ）に示される各画素列の累積濃度値のヒストグラムＢ５０を示す図である。図２（Ｃ）において、横方向の矢印は第一方向であるＸ軸を示す。図２（Ｃ）には、第一の方向に沿った文字画素の特徴量である第一の特徴量Ｂ５１〜Ｂ６２が示されており、それぞれ、Ｘ軸上に投影された画素列Ｂ３１〜Ｂ４２の累積濃度値に相当する。図２（Ｃ）の例において、特徴量Ｂ５１は、画素列３１の各画素の濃度値を累積した累積濃度値であり、その値は０である。同様に、画素列３２の特徴量Ｂ５２は累積濃度値「１０」であり、画素列３３の特徴量Ｂ５３は累積濃度値「２」である。画素列３４の特徴量Ｂ５４、画素列３５の特徴量Ｂ５５、画素列３６の特徴量Ｂ５６、画素列３７の特徴量Ｂ５７、画素列３８の特徴量Ｂ５８、及び画素列４１の特徴量Ｂ６１は、累積濃度値「２」である。画素列Ｂ３９の特徴量Ｂ５９は、累積濃度値「４」である。画素列Ｂ４０の特徴量Ｂ６０は、累積濃度値「１」である。そして、画素列Ｂ４２の特徴量Ｂ６２は、累積濃度値「０」である。すなわち、図２（Ｃ）の例から得られる第一の特徴量は、１２個の画素列の特徴量Ｂ５１〜Ｂ６２である｛０，１０，２，２，２，２，２，２，４，１，２，０｝を含む。
【００３４】
また、第一特徴量取得処理２１４は、第一特徴量を取得する際に、各画素の濃度値を累積する区間を複数に分割してもよい。第一方向が横方向である場合、例えば、行データに含まれる各画素の縦一列を４等分の区間に分割し、各区間において縦一列の累積濃度値を算出してもよい。この例において、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像の場合、第一特徴量は、縦一列にＭ／４個の画素の濃度値を累積して得られたＮ個の累積濃度値が４区間分得られ、全体で４×Ｎ個の累積濃度値であってよい。実施例１において分割数は４に限定されず、他の分割数を用いてもよい。
【００３５】
図３及び図４（Ａ）乃至図４（Ｄ）を用いて、第一方向を横方向（Ｘ軸）とした場合の第一特徴量を取得する過程のもう一つの例を説明する。図３は、図２（Ａ）と同様に、縦１６個×横１２個の画素が配置された領域Ｂ６０に、一文字の日本語の片仮名に相当する文字画素が描画された行画像の一例を示す図である。図３の領域Ｂ６０は、第一方向とは直交する第二方向（Ｙ軸）に沿って４等分された部分領域Ｂ６１、部分領域Ｂ６３、部分領域Ｂ６５、部分領域Ｂ６７を有する。
【００３６】
図４（Ａ）では、部分領域Ｂ６１の各画素を第一の方向（Ｘ軸）に沿って投影して得た累積濃度値で表わされる第一特徴量Ｂ６１１〜Ｂ６２２が示されており、第一特徴量Ｂ６１１〜Ｂ６２２の各々の値をＸ軸上の座標値順に配列すると｛０，１，０，０，０，０，０，０，２，０，２，０｝である。図４（Ｂ）では、部分領域Ｂ６３の各画素を第一の方向（Ｘ軸）に沿って投影して得た累積濃度値で表わされる第一特徴量Ｂ６３１〜Ｂ６４２が示されており、第一特徴量Ｂ６３１〜Ｂ６４２の各々の値をＸ軸上の座標値順に配列すると｛０，４，１，１，１，１，１，１，１，０，０，０｝である。図４（Ｃ）では、部分領域Ｂ６５の各画素を第一の方向（Ｘ軸）に沿って投影して得た累積濃度値で表わされる第一特徴量Ｂ６５１〜Ｂ６６２が示されており、第一特徴量Ｂ６５１〜Ｂ６６２の各々の値をＸ軸上の座標値順に配列すると｛０，４，０，０，０，０，０，０，０，０，０，０｝である。図４（Ｄ）では、部分領域Ｂ６７の各画素を第一の方向（Ｘ軸）に沿って投影して得た累積濃度値で表わされる第一特徴量Ｂ６７１〜Ｂ６８２が示されており、第一特徴量Ｂ６７１〜Ｂ６８２の各々の値をＸ軸上の座標値順に配列すると｛０，１，１，１，１，１，１，１，１，１，０，０｝である。このように、縦１６個×横１２個の画素が配置された領域Ｂ６０から、４×１２個の累積濃度値を有する第一の特徴量を取得してもよい。
【００３７】
図１の説明に戻る。第二特徴量取得処理２１５は、行画像取得処理２１３により第二画像データから取得された１以上の行画像データの各々から、第一方向に沿った文字画素の特徴量である第二特徴量を取得する処理を、プロセッサ１に実行させるプログラムに相当する。第二特徴量取得処理２１５は、例えば、第二画像データから取得した各行画像データに含まれる各画素の濃度値を第一方向に投影して得られる累積濃度値を第二特徴量とするように構成され得る。例えば、第一方向が横方向である場合、行画像データに含まれる各画素の濃度値を縦一列に累積した値（累積濃度値）を第二特徴量としてもよい。この例において、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像の場合、第二特徴量は、縦一列にＭ個の画素の濃度値を累積して得られたＮ個の累積濃度値であってもよい。また、累積する区間を複数に分割してもよい。第一方向が横方向である場合、例えば、行データに含まれる各画素の縦一列を４等分の区間に分割し、各区間において縦一列の累積濃度値を算出してもよい。この例において、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像の場合、第二特徴量は、縦一列にＭ／４個の画素の濃度値を累積して得られたＮ個の累積濃度値が４区間分得られ、全体で４×Ｎ個の累積濃度値であってよい。実施例１において分割数は４に限定されず、他の分割数を用いてもよい。
【００３８】
対応関係取得処理２１６は、第一画像データに関する第一特徴量と、第二画像データに関する第二特徴量とを比較し、第一画像データと第二画像データとの第一方向上の文字画素の対応関係を取得する処理を、プロセッサ１に実行させるプログラムに相当する。対応関係取得処理２１６は、第一画像データに関する第一特徴量として、第一特徴量取得処理２１４が第一画像データの各行画像データから取得した第一特徴量を用いるように構成され得る。また、対応関係取得処理２１６は、第二画像データに関する第二特徴量として、第二特徴量取得処理２１５が第二画像データの各行画像データから取得した第二特徴量を用いるように構成され得る。また、対応関係取得処理２１６は、動的計画法（ＤＰ：Dynamic Programming）を用いたマッチング（以下、ＤＰマッチングと称呼する）などを用いて、第一画像データと第二画像データとの第一方向上の文字画素の対応関係を取得するように構成され得る。例えば、第一画像データの各行画像データと第二画像データの各行画像データとの間で、第一方向に投影された文字画素の特徴量（例えば累積濃度値）のパターンが類似する画素の対応付けが行われる。マッチング処理を実施した結果、第一画像データと第二画像データとの対応関係を示す情報として、例えば、第一画像データの各行画像データと第二画像データの各行画像データとの第一方向上の座標値の対応関係を示す格子点（変換対）を有する対応関係表が生成される。
【００３９】
改行位置判定処理２１７は、第一画像データに描画された文字列データの改行位置を用いて、第二画像データから取得した文字認識結果の改行位置を調整する処理を、プロセッサ１に実行させるプログラムに相当する。別言すると、改行位置判定処理２１７は、対応関係取得処理２１６により取得した対応関係に基づいて、第一画像データから取得した１以上の行画像データの各々の第一方向における終端の位置に対応する、第二画像データ上の第一方向における位置を特定し、文字認識結果における改行位置とする処理を、プロセッサ１に実行させるプログラムに相当する。例えば、改行位置判定処理２１７は、対応関係取得処理２１６が生成した対応関係表を、第一画像データの各行画像データ上の第一方向における座標値順に参照し、各行画像データ上の第一方向における終端位置に対応する座標値（第一座標値）を有する対応関係を特定するように構成され得る。第一画像の行画像データが第一方向において座標値｛１、・・・、Ｎ｝の範囲でＮ個の画素列で構成される場合、第一座標値は例えばＮである。また、改行位置判定処理２１７は、第一座標値を有する対応関係を参照し、第二画像データの行画像データ上の第一方向における座標値（第二座標値）を特定するように構成され得る。第一座標値における画素は、第一方向における終端位置であることから改行位置の画素に相当し、文字画素を含んでいないか、あるいは文字の終端に位置する画素であることが想定される。第一座標値における画素と特徴量が類似するパターンを有する第二画像データの行画像データ上の画素は、第一画像データにおける改行位置の画素に相当する可能性がある。そこで、改行位置判定処理２１７は、認識結果取得処理２１２が第二画像データから取得した文字認識結果のうち、第二画像データの行画像の開始端から第二座標値までの部分画像から得られた認識結果に相当する文字コード列の直後に改行コードを挿入するように構成され得る。これにより、第一画像データよりも高い精度での文字認識が可能な第二画像データを用いて取得した文字認識結果において、第一画像データにおける改行位置に対応する箇所に改行コードを挿入することができ、文字認識精度をより向上させることができる。
【００４０】
つぎに、図５を用いて、実施例１に係る文字認識処理の流れの一例を説明する。図５は、実施例１に係る文字認識処理の流れの一例を示す図である。実施例１に係る文字認識装置１００のプロセッサ１は、例えば、利用者の操作に応じて入力装置４から文字認識プログラム２１をプロセッサ１に実行開始させるための入力信号がプロセッサ１に供給されたことを契機として、図５に示す文字認識処理の実行を開始してもよい。
【００４１】
プロセッサ１は、ブラウザ２２の表示倍率を第一倍率に設定し、入力されたＨＴＭＬ文書をブラウザ２２に表示させる（Ｓ１０１）。この処理Ｓ１０１は、プロセッサ１が文字認識プログラム２１の第一画像取得処理２１０を実行することにより実現される処理の一例である。ここで、入力されたＨＴＭＬ文書は、図５に示す文字認識処理の実行開始時に、あるいは、文字認識処理の実行過程において、ブラウザ２２に表示させるＨＴＭＬ文書の格納場所を示すＵＲＬ（Uniform Resource Locator）に基づいて、例えば、通信装置５を介してＷｅｂサーバから取得されたＨＴＭＬ文書である。例えば、プロセッサ１は、ＷｅｂＤｒｉｖｅｒのＡＰＩを用いて所定のＵＲＬを指定してブラウザ２２を実行することで、ＵＲＬで特定される格納場所からＨＴＭＬ文書をダウンロードしてもよい。処理Ｓ１０１において、ブラウザ２２の処理により取得されたＨＴＭＬ文書は、ブラウザ２２内のＨＴＭＬ解析エンジンとして動作するプロセッサ１により解析され、文字列要素などのＨＴＭＬ要素を含むＤＯＭ（Document Object Model）構造として記憶装置２に格納される。ブラウザ２２内のレンダリングエンジンとして動作するプロセッサ１は、ＤＯＭ構造に含まれる各ＨＴＭＬ要素を、第一倍率に応じたフォントサイズを用いて、ブラウザ２２の表示領域に描画する。なお、処理Ｓ１０１以前にブラウザ２２の表示倍率が第一倍率に設定されている場合は、プロセッサ１は、処理Ｓ１０１において改めて表示倍率を第一倍率に設定しなくてもよい。
【００４２】
プロセッサ１は、第一倍率で描画されたＨＴＭＬ文書の文字列要素を表示する領域（文字列表示領域）を画面キャプチャすることで、第一画像データを取得する（Ｓ１０２）。この処理Ｓ１０２は、プロセッサ１が文字認識プログラム２１の第一画像取得処理２１０を実行することにより実現される処理の一例である。図６は、第一画像の一例を示す図である。図６の第一画像Ｃ１０は、横縦の比が１０：３の領域に、「ＡＢＣ」の文字列が描画された行と、「ＤＥＦ」の文字列が描画された行とを有する。別言すると、図６の第一画像Ｃ１０は、文字列「ＡＢＣ」と文字列「ＤＥＦ」との間に改行が存在する。なお、プロセッサ１は、処理Ｓ１０２で取得した第一画像データを記憶装置２に格納してもよい。処理Ｓ１０２において、プロセッサ１は、ＤＯＭ構造に含まれるＨＴＭＬ要素のうち文字列要素の表示領域（文字列表示領域）に関する情報（例えば、文字列表示領域の位置（座標値）、幅、高さ）を、ＷｅｂＤｒｉｖｅｒのＡＰＩを用いてブラウザ２２から取得することで、画面キャプチャすべき文字領域の範囲を特定してもよい。あるいは、文字画素の濃度値を累積したヒストグラムを用いた既知の手法により、文字領域の範囲を特定してもよい。
【００４３】
プロセッサ１は、ブラウザ２２の表示倍率を第二倍率に設定し、処理Ｓ１０１と同じＨＴＭＬ文書をブラウザに表示させる（Ｓ１０３）。この処理Ｓ１０３は、プロセッサ１が文字認識プログラム２１の第二画像取得処理２１１を実行することにより実現される処理の一例である。ここで、第二倍率は、文字認識の精度を上げるため、処理Ｓ１０１で用いられる第一倍率よりも大きな値の倍率が用いられる。例えば、第一倍率が１００％である場合、第二倍率は第一倍率の２倍の倍率である２００％であってもよい。処理Ｓ１０３により、ブラウザ２２内のレンダリングエンジンとして動作するプロセッサ１は、ＤＯＭ構造に含まれる各ＨＴＭＬ要素を、第二倍率に応じたフォントサイズを用いて、ブラウザ２２の表示領域に描画する。なお、処理Ｓ１０３において、ブラウザ２２の表示領域は、必ずしも表示装置３に表示しなくてもよい。例えば、第二倍率を用いて描画されたブラウザ２２の表示領域は、表示装置３には表示されず、内部データとして処理されるだけであってもよい。
【００４４】
プロセッサ１は、第二倍率で表示されたＨＴＭＬ文書の文字列表示領域を画面キャプチャすることで、第二画像データを取得する（Ｓ１０４）。この処理Ｓ１０４は、プロセッサ１が文字認識プログラム２１の第二画像取得処理２１１を実行することにより実現される処理の一例である。なお、プロセッサ１は、処理Ｓ１０４で取得した第二画像データを記憶装置２に格納してもよい。処理Ｓ１０４において、プロセッサ１は、ＤＯＭ構造に含まれるＨＴＭＬ要素のうち文字列要素の表示領域（文字列表示領域）に関する情報（例えば、文字列表示領域の位置（座標値）、幅、高さ）を、ＷｅｂＤｒｉｖｅｒのＡＰＩを用いてブラウザ２２から取得することで、画面キャプチャすべき文字列表示領域の範囲を特定してもよい。あるいは、文字画素の濃度値を累積したヒストグラムを用いた既知の手法により、文字列表示領域の範囲を特定してもよい。図７は、第二画像の一例を示す図である。図７の第二画像Ｃ２０は、横縦の比が図６と同様に１０：３の領域に、「ＡＢＣＤ」の文字列が描画された行と、「ＥＦ」の文字列が描画された行とを有する。ただし、第二画像Ｃ２０の寸法は、縦横それぞれ第一画像Ｃ１０の２倍である。図７の第二画像Ｃ２０は、文字列「ＡＢＣＤ」と文字列「ＥＦ」との間に改行が存在する。すなわち、第一画像Ｃ１０と第二画像Ｃ２０とでは、改行位置が一文字ずれている。これは、第二倍率が第一倍率をＲ倍したものであったとしても、第二倍率に応じたフォントサイズの文字幅や文字間隔などの値は、第一倍率に応じたフォントサイズの文字幅や文字間隔などの値を単純にＲ倍した値と異なり得るためである。別言すると、第二倍率で表示されたＨＴＭＬ文書の文字列表示領域が、横縦の比率を第一倍率で表示した文字列表示領域と同じ比率を維持したまま拡大して描画されたとしても、第一画像と第二画像とで文字のレイアウトが異なり得る。
【００４５】
プロセッサ１は、画像処理プログラム２３が有する文字認識処理としての処理を用いて、処理Ｓ１０４で取得した第二画像データから文字認識結果を取得する（Ｓ１０５）。この処理Ｓ１０５は、プロセッサ１が文字認識プログラム２１の認識結果取得処理２１２を実行することにより実現される処理の一例である。ここで、文字認識結果は、第二画像データに描画されている各文字の文字コードを含む。文字認識結果として、さらに、各文字の文字画素が配置されている領域を示す文字枠に関する情報を含んでもよい。文字枠に関する情報には、例えば、文字枠の左上角の座標値と、文字枠の大きさを示す高さ及び幅とを含んでもよい。図８は、第二画像データから得られた文字枠の一例を示す図である。図８では、文字列「ＡＢＣＤＥＦ」の各文字の文字画素が配置されている領域に文字枠Ｃ２１〜Ｃ２６が対応付けられている。
【００４６】
つぎに、図９を用いて、図８に示す第二画像データから得られた文字認識結果を表す認識結果情報Ｔ１０のデータ構造例について説明する。図９は、図８に示す第二画像データから得られた文字認識結果を表す認識結果情報Ｔ１０のデータ構造の一例を示す図である。図９の認識結果情報Ｔ１０は、図８に描画された文字列「ＡＢＣＤＥＦ」に含まれる各文字の認識結果を示す文字要素を格納した情報構造を有する。すなわち、図９の認識結果情報Ｔ１０は、文字列「ＡＢＣＤＥＦ」に含まれる各文字に対応する文字要素と文字列中の改行位置に対応する文字要素との、合計７個の文字要素を有する。したがって、図９に示す認識結果情報Ｔ１０の要素数Ｔ１１の項目には値「７」が設定されている。各文字要素は、文字枠内の文字画素から認識された文字に対応する文字コードと文字枠情報とを有し、文字枠情報は文字枠の左角の位置を示す文字枠位置と文字枠の幅と高さに関する情報を有する。文字要素［１］Ｔ１２から文字要素［７］Ｔ１８までの７個の文字要素は、文字列の並びに対応付けられており、例えば、１番目の文字要素［１］Ｔ１２は文字列の先頭に位置する文字「Ａ］に対応し、文字コードの欄には文字「Ａ」に対応する文字コードとして「０ｘ４１」のＡＳＣＩＩ（Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  Ｃｏｄｅ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｒｃｈａｎｇｅ）コードが設定されている。なお、文字コード欄に設定される値は、ＵＴＦ−８（Ｕｎｉｃｏｄｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  Ｆｏｒｍａｔ  −  ８）などの他の文字コード体系の値を用いてもよい。
【００４７】
図９において、文字列の先頭から４番目に位置する文字「Ｄ」（０ｘ４４）に対応する文字要素［４］Ｔ１５と、５番目に位置する文字「Ｅ」（０ｘ４５）に対応する文字要素［６］Ｔ１７との間には、改行コード「０ｘ０Ａ」（ＬＦ）に対応する文字要素［５］Ｔ１６が格納されている。これは、図８に描画された文字列が「Ｄ」と「Ｅ」との間で改行されているためである。なお、改行コードの値は一例であり、例えば、「０ｘ０Ｄ」（ＣＲ）でもよいし、「０ｘ０Ｄ」（ＣＲ）と「０ｘ０Ａ」（ＬＦ）との組み合わせであってもよい。この様に、図９に示す認識結果情報の改行位置は、第二倍率で描画された第二画像データ上の文字列レイアウトから得られた認識結果であるため、図６に示す第一倍率で描画された第一画像データ上の文字列レイアウトとは異なる位置で改行コードが挿入され得る。
【００４８】
図５の説明に戻る。プロセッサ１は、処理Ｓ１０２で取得した第一画像データから第一画像データに関する１以上の行画像データを取得し、処理Ｓ１０４で取得した第二画像データから第二画像データに関する１以上の行画像データを取得する（Ｓ１０６）。この処理Ｓ１０６は、プロセッサ１が文字認識プログラム２１の行画像取得処理２１３を実行することにより実現される処理の一例である。処理Ｓ１０６において、プロセッサ１は、例えば、第一方向に沿って１以上の文字が描画された領域（行領域）を特定し、行領域に関する情報を示す行領域情報を生成し、行領域情報で示される領域内の画素の集合を行画像データとして参照すればよい。プロセッサ１は、例えば、第一方向とは直交する第二方向に沿って文字画素を投影して得た累積濃度値のヒストグラムを用いて、行領域を特定すればよい。すなわち、プロセッサ１は、第一方向に連続して並ぶ画素の濃度値を累積して得た累積濃度値を第二方向に沿って並べて、第二方向に投影された文字画素のヒストグラムを生成し、ヒストグラム上で累積濃度値が連続して閾値以上となる範囲を求めることで、行領域を特定することができる。
【００４９】
図１０は、第一画像データから行画像データを取得する過程の一例を説明した図である。図１０の例では、第一画像データＣ１０に描画された文字画素をＹ軸に沿って投影した累積濃度値のヒストグラムＨ１０が図示されている。なお、図１０の例においてＹ軸は、第一の方向とは直交する第二の方向の一例である。プロセッサ１は、図１０のヒストグラムＨ１０上の値が連続して所定の閾値以上を示す範囲Ｐ１〜Ｐ２と範囲Ｐ３〜Ｐ４で区画される領域を行領域Ｌ１１及び行領域Ｌ１２として特定し得る。なお、ヒストグラムＨ１０から得た範囲がフォントサイズに応じた一文字分の高さに相当する寸法を有さない場合、プロセッサ１は、ノイズとして行領域から除外してもよい。第二画像データから１以上の行画像データを取得する手順も同様である。
【００５０】
図１１は、図１０に示す第一画像データの例から特定された行領域に関する情報である行領域情報のデータ構造の一例を示す図である。図１１に示す行領域情報Ｔ４０には、図１０に示される行領域Ｌ１１及び行領域Ｌ１２に関する情報が行要素として格納されており、ゆえに、要素数Ｔ４１の欄には行要素の個数を示す値２が設定される。各行要素には、行領域の上端のＹ座標値を示す「上端Ｙ座標値」と、行領域の高さ（縦方向の長さ）を示す「高さ」が設定される。例えば、１番目の行要素Ｔ４２が有する上端Ｙ座標値Ｔ４２１には、行領域Ｌ１１の上端のＹ座標値として、図１０に示すＰ１の位置に対応する第一画像上のＹ座標値が設定される。また、１番目の行要素Ｔ４２が有する高さＴ４２２には、行領域Ｌ１１の高さとして、図１０に示すＰ１の位置に対応する第一画像上のＹ座標値と図１０に示すＰ２の位置に対応する第一画像上のＹ座標値との差分値に基づく値を設定すればよい。２番目の行要素Ｔ４３についても、同様に、上端Ｙ座標値には図１０に示すＰ３の位置に対応する第一画像上のＹ座標値を設定し、高さには図１０に示すＰ３の位置に対応する第一画像上のＹ座標値と図１０に示すＰ４の位置に対応する第一画像上のＹ座標値との差分値に基づく値を設定すればよい。プロセッサ１は、図１１に例示する行領域情報を参照することで、第一画像データに含まれる画素のうち、行領域に属する画素を含んで構成される行画像データを取得することができる。なお、第二画像データから取得される行領域についても同様に、図１１の例と同様のデータ構造を有する行領域情報が生成され、プロセッサ１は、第二画像データに関する行領域情報を参照することで、第二画像データに含まれる画素のうち、行領域に属する画素を含んで構成される行画像データを取得することができる。
【００５１】
図５の説明に戻る。プロセッサ１は、第一画像データから取得した１以上の行画像の各々から、第一方向に沿った文字画素の特徴量である第一特徴量を取得する（Ｓ１０７）。この処理Ｓ１０７は、プロセッサ１が文字認識プログラム２１の第一特徴量取得処理２１４を実行することにより実現される処理の一例である。第一特徴量は、例えば、第一画像データの各行画像データに含まれる画素の濃度値を第一方向に投影して得られる累積濃度値のヒストグラムである。例えば、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像の場合、第一特徴量は、縦一列にＭ個の画素の濃度値を累積して得られたＮ個の累積濃度値であってもよい。文字画素の濃度値を１としそれ以外の画素の濃度値を０とした二値画像を行画像データとして用いる場合、第一特徴量の累積濃度値は、累積された文字画素の個数と等価である。
【００５２】
処理Ｓ１０７において、プロセッサ１は、第一特徴量を取得する前に、第一画像データから取得した各行画像データの第二方向の画素数を、第二画像データの行画像データの画素数と略同一となるように、第一画像データの各行画像データを第二方向に拡大する処理を行ってもよい。例えば、第二方向がＹ軸（縦方向）である場合、第一画像データから取得した各行画像の高さ（Ｙ軸方向の長さ）を合計した値と、第二画像データから取得した各行画像の高さを合計した値との比率（変換率）に基づいて、プロセッサ１は、第一画像データから取得した各行画像データをＹ軸方向に拡大する画像処理を行えばよい。あるいは、プロセッサ１は、処理Ｓ１０１及び処理Ｓ１０３でブラウザ２２に設定した表示倍率である第一倍率と第二倍率との比率（変換率）に基づいて、第一画像データから取得した各行画像データをＹ軸方向に拡大する画像処理を行ってもよい。第一画像データの各行画像データの画素数を第二方向において第二画像データと略同一とすることで、処理Ｓ１０７で取得される第一画像データに関する第一特徴量と処理Ｓ１０８（後述の）で取得される第二画像データに関する第二特徴量との間で、各特徴量がとり得る値の範囲を略同一にすることができ、第一特徴量と第二特徴量との比較において対応関係の探索処理を効率化することができる。例えば、第一画像の画素と第二画像の画素との類似性を示す指標として、第一特徴量と第二特徴量との差分に基づく値を用いる場合、類似性の度合いが高いほど、第一特徴量と第二特徴量との差分が値０に近づくため、画素ごとの類似性を示す指標の記憶容量を節約することができる。なお、変換率を用いて第一方向へも拡大処理を行ってよい。以下では、第二方向へのみ拡大処理を行った場合の動作について説明する。第一方向への拡大処理を行った場合の動作については、後述の処理Ｓ１０９及び処理Ｓ１１０における第一画像の各行画像が有する画素列の個数Ｎ１を変換率で拡大した値に適宜読み替えればよい。
【００５３】
上述の拡大処理は、第一画像データの各行画像データから第一特徴量を取得した後に、第一特徴量の各値に対して行ってもよい。この場合でも、処理Ｓ１０７で取得される第一画像データに関する第一特徴量と処理Ｓ１０８で取得される第二画像データに関する第二特徴量との間で、各特徴量がとり得る値の範囲を略同一にすることができ、第一特徴量と第二特徴量との比較において対応関係の探索処理を効率化することができる。なお、本実施例は上述の例に限定されるものではなく、例えば、後述する処理Ｓ１０９で比較する際に、第一特徴量と第二特徴量とで、各特徴量の最大値と最小値が略同一となるようにすることができればよい。
【００５４】
図１２（Ａ）及び図１２（Ｂ）は、図１０に示す第一画像データＣ１０から取得した行画像データについての第一特徴量の一例を示す図である。ただし、図１２（Ａ）及び図１２（Ｂ）に示す行画像データＬ１１ａ及び行画像データＬ１２ａは、図１０に示す第一画像データＣ１０上の行領域Ｌ１１及びＬ１２の画素がＹ軸方向において第二画像データＣ２０の行領域と略同一となるように拡大処理が行われている。図１２（Ａ）に示される行画像データＬ１１ａは文字列「ＡＢＣ」が描画された文字画素を有しており、プロセッサ１は、第一の方向であるＸ軸方向（横方向）に沿って行画像データＬ１１ａの文字画素を投影することで、行画像データＬ１１ａの第一特徴量であるヒストグラムＨ１１が得られる。同様に、図１２（Ｂ）に示される行画像データＬ１２ａは文字列「ＤＥＦ」が描画された文字画素を有しており、プロセッサ１は、第一方向であるＸ軸方向に沿って行画像データＬ１２ａの文字画素を投影することで、行画像データＬ１２ａの第一特徴量であるヒストグラムＨ１２が得られる。なお、図１２（Ａ）及び図１２（Ｂ）に例示する行画像データとヒストグラムとは、実施例１を説明する上での便宜上のものに過ぎず、図に表示される行画像データの各画素列とヒストグラムとの対応関係は必ずしも厳密に対応づけて描写しているわけではない点に留意されたい。
【００５５】
図１２（Ａ）及び図１２（Ｂ）の例におけるヒストグラムＨ１１及びヒストグラムＨ１２は、例えば、累積される各画素列が位置するＸ軸上の座標値に対応付けて累積濃度値の情報が格納されるデータ構造を有すればよい。図１３は、図１０に示す第一画像データＣ１０に関する第一特徴量を格納する第一特徴量情報Ｔ２０のデータ構造の一例である。図１３に示す第一特徴量情報Ｔ２０は、要素数Ｔ２１の欄に第一画像データＣ１０から得られる行画像データの個数である値「２」が設定されており、各行画像データから得た第一特徴量が行要素Ｔ２２及び行要素Ｔ２３に格納されている。そして、各行要素Ｔ２２及びＴ２３には、各画素列が位置するＸ軸上の座標値に対応付けて各画素列の特徴量（例えば累積濃度値）が格納される。第二特徴量についても図１３と同様のデータ構造としてもよい。
【００５６】
また、第一特徴量としての累積濃度値は、文字画素の濃度値を累積する区間（累積区間）が複数に分割された二以上の累積値を含んでもよい。例えば、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像において、累積区間が４つに分割される場合、一つの行画像データから得られる第一特徴量は、縦一列にＭ／４個の画素の濃度値を累積して得られたＮ個の累積濃度値が４区間分得られ、全体で４×Ｎ個の累積濃度値であってよい。
【００５７】
図１４（Ａ）乃至図１４（Ｄ）は、図１２（Ａ）に示す行画像データＬ１１ａをＹ軸方向（縦方向）に４等分した部分領域Ｌ１１１乃至Ｌ１１４と、各部分領域についての第一特徴量Ｈ１１１乃至Ｈ１１４の一例を示す図である。図１４（Ａ）に示される部分領域Ｌ１１１は、図１２（Ａ）に示す行画像データＬ１１ａを４等分した部分領域のうち一番上に位置する領域であり、プロセッサ１は、第一方向であるＸ軸方向（横方向）に沿って部分領域Ｌ１１１の文字画素を投影することで、行画像データＬ１１ａの部分領域Ｌ１１１についての第一特徴量であるヒストグラムＨ１１１が得られる。図１４（Ｂ）に示される部分領域Ｌ１１２は、図１２（Ａ）に示す行画像データＬ１１ａを４等分した部分領域のうち上から二番目に位置する領域であり、プロセッサ１は、第一方向であるＸ軸方向（横方向）に沿って部分領域Ｌ１１２の文字画素を投影することで、行画像データＬ１１ａの部分領域Ｌ１１２についての第一特徴量であるヒストグラムＨ１１２が得られる。図１４（Ｃ）に示される部分領域Ｌ１１３は、図１２（Ａ）に示す行画像データＬ１１ａを４等分した部分領域のうち上から三番目に位置する領域であり、プロセッサ１は、第一方向であるＸ軸方向（横方向）に沿って部分領域Ｌ１１３の文字画素を投影することで、行画像データＬ１１ａの部分領域Ｌ１１３についての第一特徴量であるヒストグラムＨ１１３が得られる。図１４（Ｄ）に示される部分領域Ｌ１１４は、図１２（Ａ）に示す行画像データＬ１１ａを４等分した部分領域のうち上から四番目に位置する領域であり、プロセッサ１は、第一方向であるＸ軸方向（横方向）に沿って部分領域Ｌ１１４の文字画素を投影することで、行画像データＬ１１ａの部分領域Ｌ１１４についての第一特徴量であるヒストグラムＨ１１４が得られる。なお、図１４（Ａ）乃至図１４（Ｄ）に例示する行画像データとヒストグラムとは、実施例１を説明する上での便宜上のものに過ぎず、図に表示される行画像データの各画素列とヒストグラムとの対応関係は必ずしも厳密に対応づけて描写しているわけではない点に留意されたい。
【００５８】
図１４（Ａ）乃至図１４（Ｄ）の例におけるヒストグラムＨ１１１乃至ヒストグラムＨ１１４は、例えば、累積される各画素列が位置するＸ軸上の座標値に対応付けて累積濃度値の情報が格納されるデータ構造を有すればよい。図１５は、図１０に示す第一画像データＣ１０から得られた行画像データが図１４（Ａ）乃至図１４（Ｄ）に示すように４分割された部分領域毎に第一特徴量を取得した場合の第一特徴量情報Ｔ３０のデータ構造の一例である。図１５に示す第一特徴量情報Ｔ３０は、要素数Ｔ３１の欄に第一画像データＣ１０から得られる行画像データの個数である値「２」が設定されており、各行画像データの部分領域から得られる第一特徴量が行要素Ｔ３２及び行要素Ｔ３３に格納されている。そして、各行要素Ｔ３２及びＴ３３には、各部分領域における各画素列が位置するＸ軸上の座標値に対応付けて各部分領域における画素列の特徴量（例えば累積濃度値）が格納される。例えば、図１４（Ａ）に示す部分領域Ｌ１１１における各画素列の特徴量は行要素[1]Ｔ３２の特徴量Ａ[1]〜特徴量Ａ[N]に格納され、図１４（Ｂ）に示す部分領域Ｌ１１２における各画素列の特徴量は行要素[1]Ｔ３２の特徴量Ｂ[1]〜特徴量Ｂ[N]に格納され、図１４（Ｃ）に示す部分領域Ｌ１１３における各画素列の特徴量は行要素[1]Ｔ３２の特徴量Ｃ[1]〜特徴量Ｃ[N]に格納され、図１４（Ｄ）に示す部分領域Ｌ１１４における各画素列の特徴量は行要素[1]Ｔ３２の特徴量Ｄ[1]〜特徴量Ｄ[N]に格納される。第二特徴量についても図１５と同様のデータ構造としてもよい。
【００５９】
図５の説明に戻る。プロセッサ１は、第二画像データから取得した１以上の行画像の各々から、第一方向に沿った文字画素の特徴量である第二特徴量を取得する（Ｓ１０８）。この処理Ｓ１０８は、プロセッサ１が文字認識プログラム２１の第二特徴量取得処理２１５を実行することにより実現される処理の一例である。第二特徴量は、例えば、第二画像データの各行画像データに含まれる画素の濃度値を第一方向に投影して得られる累積濃度値のヒストグラムである。例えば、第一方向（例えば横方向）にＮ個の画素が並び、第二方向（例えば縦方向）にＭ個の画素が並ぶ行画像の場合、第二特徴量は、縦一列にＭ個の画素の濃度値を累積して得られたＮ個の累積濃度値であってもよい。文字画素の濃度値を１としそれ以外の画素の濃度値を０とした二値画像を行画像データとして用いる場合、第二特徴量の累積濃度値は、累積された文字画素の個数と等価である。また、第二特徴量の累積濃度値は、第一特徴量と同様に、文字画素の濃度値を累積する区間（累積区間）が複数に分割された二以上の累積値を含んでもよい。
【００６０】
図１６（Ａ）及び図１６（Ｂ）は、図７に示す第二画像データＣ２０から取得した行画像データＬ２１及び行画像データＬ２２についての第二特徴量Ｈ２１及び第二特徴量Ｈ２２が図示されている。すなわち、図１６（Ａ）に示される行画像データＬ２１は文字列「ＡＢＣＤ」が描画された文字画素を有しており、プロセッサ１は、第一の方向であるＸ軸方向（横方向）に沿って行画像データＬ２１の文字画素を投影することで、行画像データＬ２１の第二特徴量であるヒストグラムＨ２１が得られる。同様に、図１６（Ｂ）に示される行画像データＬ２２は文字列「ＥＦ」が描画された文字画素を有しており、プロセッサ１は、第一方向であるＸ軸方向に沿って行画像データＬ２２の文字画素を投影することで、行画像データＬ２２の第二特徴量であるヒストグラムＨ２２が得られる。なお、図１６（Ａ）及び図１６（Ｂ）の例におけるヒストグラムＨ２１及びヒストグラムＨ２２は、図１３の例と同様に、累積される各画素列が位置するＸ軸上の座標値に対応付けて累積濃度値の情報が格納されるデータ構造を有すればよい。また、第二特徴量の累積区間を複数に分割した場合の内容例は、図１４（Ａ）乃至図１４（Ｄ）に示す第一特徴量の例と略同様であるため、図面を用いた説明を省略する。また、図１６（Ａ）及び図１６（Ｂ）に例示する行画像データとヒストグラムとは、実施例１を説明する上での便宜上のものに過ぎず、図に表示される行画像データの各画素列とヒストグラムとの対応関係は必ずしも厳密に対応づけて描写しているわけではない点に留意されたい。
【００６１】
図５の説明に戻る。プロセッサ１は、処理Ｓ１０７で取得した第一特徴量（第一画像の特徴量）と、処理Ｓ１０８で取得した第二特徴量（第二画像の特徴量）とを比較し、第一画像データと第二画像データとの第一方向上の文字画素の対応関係を取得する（Ｓ１０９）。この処理Ｓ１０９は、プロセッサ１が文字認識プログラム２１の対応関係取得処理２１６を実行することにより実現される処理の一例である。処理Ｓ１０９では、例えば、ＤＰマッチングの手法を用いて、第一画像データと第二画像データとの第一方向上の文字画素の対応関係の探索が行われる。ＤＰマッチングでは、第一画像データと第二画像データとの第一の方向上の画素間の類似性（例えば、濃度値の差分）に応じたコストの累積値を最小にするように経路探索演算が行われる。
【００６２】
図１７は、第一画像の特徴量（第一特徴量）と第二画像の特徴量（第二特徴量）とのＤＰマッチングの処理過程の一例を示す図である。図１７の横軸には、第一画像上の１番目の行要素である行画像データから取得した第一特徴量Ｔ３２−１が行画像データのＸ軸上の座標値順にｒ（１，１）〜ｒ（１，Ｎ１）の範囲に配置され、第一画像上の２番目の行要素である行画像データから取得した第一特徴量Ｔ３３−１が行画像データのＸ軸上の座標値順にｒ（２，１）〜ｒ（２，Ｎ１）の範囲に配置されている。ここで、Ｎ１は、第一画像上の各行画像の画素列の数を示し、第一画像の幅（横軸方向の長さ）を示す値と等価である。図１７の縦軸には、第二画像上の１番目の行要素である行画像データから取得した第二特徴量Ｔ３２−２が行画像データのＸ軸上の座標値順にｓ（１，１）〜ｓ（１，Ｎ２）の範囲に配置され、第二画像上の２番目の行要素である行画像データから取得した第二特徴量Ｔ３３−２が行画像データのＸ軸上の座標値順にｓ（２，１）〜ｓ（２，Ｎ２）の範囲に配置されている。ここで、Ｎ２は、第二画像上の各行画像の画素列の数を示し、第二画像の幅（横軸方向の長さ）を示す値と等価である。なお、図１７に示す各特徴量は、例えば図１３に示すデータ構造例の様に、行画像データのＸ軸上の座標値と関連付けられている。例えば、第一特徴量ｒ（１，Ｎ１）は、第一画像上の１番目の行要素である行画像データが有する画素列のうち、Ｘ軸上の座標値がＮ１番目の位置（終端の位置）に対応付けられた画素列の特徴量を示す。第一特徴量ｒ（２，１）は、第一画像上の２番目の行要素である行画像データが有する画素列のうち、Ｘ軸上の座標値が１番目の位置に対応付けられた画素列の特徴量を示す。別言すると、図１７の第一特徴量ｒ（１，Ｎ１）と第一特徴量ｒ（２，１）との間に、第一画像上の行画像データの境界がある。同様に、第二特徴量ｓ（１，Ｎ２）は、第二画像上の１番目の行要素である行画像データが有する画素列のうち、Ｘ軸上の座標値がＮ２番目の位置（終端の位置）に対応付けられた画素列の特徴量を示す。第二特徴量ｓ（２，１）は、第二画像上の２番目の行要素である行画像データが有する画素列のうち、Ｘ軸上の座標値が１番目の位置に対応付けられた画素列の特徴量を示す。別言すると、図１７の第二特徴量ｓ（１，Ｎ２）と第二特徴量ｓ（２，１）との間に、第二画像上の行画像データの境界がある。
【００６３】
図１７に示す黒丸（格子点）は、横軸上に配置された第一特徴量Ｔ３２−１及びＴ３３−１と縦軸上に配置された第二特徴量Ｔ３２−２及びＴ３３−２との類似性を示す距離ｄ（類似性距離ｄ）を示す。プロセッサ１は、処理Ｓ１０９において、第一特徴量Ｔ３２−１及びＴ３３−１の各々と第二特徴量Ｔ３２−２及びＴ３３−２の各々との差分値を算出し、当該差分値の絶対値を類似性距離ｄとしてもよい。第一画像上のｋ番目（ｋは１以上の整数）の行要素のｉ番目（ｉは１以上の整数）の画素列から取得した特徴量ｒ（ｋ，ｉ）と、第二画像上のｌ番目（ｌは１以上の整数）の行要素のｊ番目（ｊは１以上の整数）の画素列から取得した特徴量ｓ（ｌ，ｊ）との類似性距離ｄ（ｋ，ｉ，ｌ，ｊ）は、例えば、以下の式（１）で表わされる。
2018072903.tif 000003
【００６４】
第一画像上の行要素数をＫとし、第一画像上の各行画像の画素列の数をＮ１とすると、第一画像の特徴量を配置する横軸方向には、Ｋ×Ｎ１個の格子点が並ぶことになる。また、第二画像上の行要素をＬとし、第二画像上の各行画像の画素列の数をＮ２とすると、第二画像の特徴量を配置する縦軸方向には、Ｌ×Ｎ２個の格子点が並ぶことになる。ゆえに、格子点の横軸方向のインデックス値をｘ｛ｘ＝１，・・・，Ｋ×Ｎ１｝（第一インデックス値）とし、縦軸方向のインデックス値をｙ｛ｙ＝１，・・・，Ｌ×Ｎ２｝（第二インデックス値）とすると、上述の式（１）は以下の式（２）で表わされる。なお、式（２）において「a mod n」は、値aを値nで除算した余りを求める剰余演算を示す。
2018072903.tif 000004
【００６５】
図１８は、行画像データの部分領域毎に取得した特徴量を用いたＤＰマッチングの処理過程の一例を示す図である。図１８では、行画像データを４等分した部分領域毎に取得された、第一画像の特徴量（第一特徴量）と第二画像の特徴量（第二特徴量）とのＤＰマッチングの処理過程の一例が図示されている。図１８の横軸には、図１７と同様に、第一画像上の１番目の行要素である行画像データから取得した第一特徴量Ｔ３２−１と２番目の行要素である行画像データから取得した第一特徴量Ｔ３３−１とが、Ｘ軸上の座標値順に配置されている。図１８の縦軸には、図１７と同様に、第二画像上の１番目の行要素である行画像データから取得した第二特徴量Ｔ３２−２と２番目の行要素である行画像データから取得した第二特徴量Ｔ３３−２とが、Ｘ軸上の座標値順に配置されている。ただし、図１８の例では、第一特徴量Ｔ３２−１及びＴ３３−１は、行画像データをＹ軸方向に４等分した部分領域の各々から取得された特徴量ｒａ乃至ｒｄを有する。同様に、第二特徴量Ｔ３２−２及びＴ３３−２の各々は、行画像データをＹ軸方向に４等分した部分領域の各々から取得された特徴量ｓａ乃至ｓｄを有する。なお、図１８に示す各特徴量は、例えば図１５に示すデータ構造例の様に、行画像データのＸ軸上の座標値と関連付けられている。例えば、４つの第一特徴量ｒａ（１，Ｎ１）、ｒｂ（１，Ｎ１）、ｒｃ（１，Ｎ１）、ｒｄ（１，Ｎ１）は、第一画像上の１番目の行要素である行画像データが有する画素列のうち、Ｘ軸上の座標値が終端の位置に対応付けられた画素列の特徴量を示す。同様に、４つの第二特徴量ｓａ（２，Ｎ２）、ｓｂ（２，Ｎ２）、ｓｃ（２，Ｎ２）、ｓｄ（２，Ｎ２）は、第二画像上の２番目の行要素である行画像データが有する画素列のうち、Ｘ軸上の座標値が終端の位置に対応付けられた画素列の特徴量を示す。本実施例では、一例として４等分の例を開示するが、２以上の任意の整数個分に分割してもよい。
【００６６】
図１８に示す黒丸（格子点）は、図１７の例と同様に、横軸上に配置された第一特徴量Ｔ３２−１及びＴ３３−１と縦軸上に配置された第二特徴量Ｔ３２−２及びＴ３３−２との類似性を示す距離ｄ（類似性距離ｄ）を示す。プロセッサ１は、処理Ｓ１０９において、第一特徴量Ｔ３２−１及びＴ３３−１の各々と第二特徴量Ｔ３２−２及びＴ３３−２の各々との差分値を算出し、当該差分値の絶対値を類似性距離ｄとしてもよい。例えば、分割領域毎に第一特徴量と第二特徴量との画素列単位の類似性距離を算出し、各分割領域の類似性距離を合算した値を画素列単位の類似性距離としてもよい。すなわち、第一画像上のｋ番目の行要素のｉ番目の画素列に関する特徴量ｒ（ｋ，ｉ）と、第二画像上のｌ番目の行要素のｊ番目の画素列に関する特徴量ｓ（ｌ，ｊ）との類似性距離ｄ（ｋ，ｉ，ｌ，ｊ）は、例えば、以下の式（３）で表わされる。
2018072903.tif 000005
【００６７】
第一画像上の行要素数をＫとし、第一画像上の各行画像の画素列の数をＮ１とすると、第一画像の特徴量を配置する横軸方向には、Ｋ×Ｎ１個の格子点が並ぶことになる。また、第二画像上の行要素をＬとし、第二画像上の各行画像の画素列の数をＮ２とすると、第二画像の特徴量を配置する縦軸方向には、Ｌ×Ｎ２個の格子点が並ぶことになる。ゆえに、格子点の横軸方向のインデックス値をｘ｛ｘ＝１，・・・，Ｋ×Ｎ１｝（第一インデックス値）とし、縦軸方向のインデックス値をｙ｛ｙ＝１，・・・，Ｌ×Ｎ２｝（第二インデックス値）とすると、上述の式（３）は以下の式（４）で表わされる。なお、式（４）において「a mod n」は、値aを値nで除算した余りを求める剰余演算を示す。
2018072903.tif 000006
【００６８】
プロセッサ１は、処理Ｓ１０９において、第一画像の特徴量（第一特徴量）と第二画像の特徴量（第二特徴量）との類似性距離を算出した後、各格子点に辿り着くまでの最小累積距離を算出し、その算出した最小累積距離の値と、各格子点までの最小累積距離を示す経路上の直前の格子点（バックポインタ）とを、格子点毎に記憶する。任意の格子点（ｘ，ｙ）までの最小累積距離Ｄ（ｘ，ｙ）は、例えば、以下の式（５）で表わされる。
2018072903.tif 000007
【００６９】
上述の式（５）において、ｐ（ａ，ｂ，ｃ，ｄ）は、格子点（ａ，ｂ）から格子点（ｃ，ｄ）へ遷移した場合に累積距離に加算される移動コスト（ペナルティ）の一例を示す。式（５）に示す例において、ｐ（ｘ−１，ｙ，ｘ，ｙ）は、演算対象の格子点を横軸にのみ１つ移動する場合の移動コスト（ペナルティ）を示す。別言すると、ｐ（ｘ−１，ｙ，ｘ，ｙ）は、横軸に並べた第一画像の特徴量を一つ収縮（脱落）させて第二画像の特徴量と比較することに対する移動コスト（ペナルティ）を意味する。ｐ（ｘ，ｙ−１，ｘ，ｙ）は、演算対象の格子点を縦軸にのみ１つ移動する場合の移動コスト（ペナルティ）を示す。別言すると、ｐ（ｘ，ｙ−１，ｘ，ｙ）は、横軸に並べた第一画像の特徴量を一つ伸長（挿入）させて第二画像の特徴量と比較することに対する移動コスト（ペナルティ）を意味する。ｐ（ｘ−１，ｙ−１，ｘ，ｙ）は、演算対象の格子点を縦軸及び横軸の双方ともに１つ移動する場合の移動コスト（ペナルティ）を示す。別言すると、ｐ（ｘ−１，ｙ−１，ｘ，ｙ）は、横軸に並べた第一画像の特徴量と第二画像の特徴量とを比較する際に伸縮しないことに対する移動コスト（ペナルティ）を意味する。移動コスト（ペナルティ）の値は、適宜調整すればよいが、例えば、伸縮を伴う遷移に対する移動コスト（ペナルティ）を１とし、伸縮を伴わない遷移に対する移動コスト（ペナルティ）を０としてもよい。また、式（５）において既知の手法に基づいて傾斜制限を設けてもよい。
【００７０】
プロセッサ１は、上述のようにして、格子点（１，１）を始点として最小累積距離を算出し、終点となる格子点（Ｋ×Ｎ１，Ｌ×Ｎ２）までの経路上の格子点毎に最小累積距離とバックポインタとを記憶すればよい。なお、始点の最小累積距離Ｄ（１，１）は、通常のＤＰマッチング処理のアルゴリズムと同様に、値０を用いてもよい。プロセッサ１は、始点から終点までの経路上の格子点の最小累積距離Ｄと各格子点のバックポインタを取得することで、始点から終点までの累積距離が最小となる最短経路（第一画像データと第二画像データとの第一方向上の文字画素の対応関係）が得られる（Ｓ１０９）。
【００７１】
図５の説明に戻る。プロセッサ１は、処理Ｓ１０９で取得した対応関係に基づいて、第一画像上の改行位置に対応する第二画像上の位置を特定し、当該箇所の文字認識結果に改行コードを挿入する（Ｓ１１０）。この処理Ｓ１１０は、プロセッサ１が文字認識プログラム２１の改行位置判定処理２１７を実行することにより実現される処理の一例である。例えば、プロセッサ１は、処理１１０において、終点のバックポインタで示される格子点を参照し、更に当該格子点に示されるバックポインタで示される格子点へと順次辿ってバックトレースすることで、最短経路上の格子点を参照し、横軸方向のインデックス値ｘ（第一インデックス値）が第一画像上の各行要素が有する画素列の個数Ｎ１を整数倍した値を示す格子点を特定する。横軸方向のインデックス値ｘ（第一インデックス値）が第一画像上の各行要素が有する画素列の個数Ｎ１を整数倍した値を示す格子点は、第一画像上の各行要素（行画像）の第一方向における終端位置に対応する。行要素の第一方向上の終端は改行位置に対応するため、プロセッサ１は、横軸方向のインデックス値ｘ（第一インデックス値）が第一画像上の各行要素が有する画素列の個数Ｎ１を整数倍した値を示す格子点を参照することで、第一画像上の改行位置に対応する第二画像上の画素列の位置を特定し得る。なお、Ｋ×Ｎ１番目の格子点は特定対象から除外してもよい。なぜならば、Ｋ×Ｎ１番目の格子点は、第一画像上の行要素のうち最後の行要素の終端位置に対応し、最後の行要素に含まれる文字画素が描画する文字列には改行が存在しないと考えられるためである。
【００７２】
図１９は、ＤＰマッチング処理による最短経路上の格子点と第一画像上の行要素の終端位置との対応関係の一例を示す図である。図１９では、第一画像上の行要素数をＫとし、第一画像上の各行画像の画素列の数をＮ１とした場合の、Ｋ×Ｎ１個の各画素列の第一特徴量が横軸方向に並べられている。また、第二画像上の行要素数をＬとし、第一画像上の各行画像の画素列の数をＮ２とした場合の、Ｌ×Ｎ２個の各画素列の第二特徴量が縦軸方向に並べられている。図１９において、左下隅の矩形は始点（１，１）を示し、右上隅の矩形は終点（Ｋ×Ｎ１，Ｌ×Ｎ２）を示し、白丸は始点から終点までの最短経路上の格子点を示す。なお、最短経路上の格子点を結ぶ破線は、１以上の格子点について図示が省略されていることを示す。
【００７３】
図１９において、終点（Ｋ×Ｎ１，Ｌ×Ｎ２）のバックポインタに示される最短経路Ｒ１０上の格子点を順次辿ることで、始点（１，１）までの最短経路上の格子点が得られる。最短経路Ｒ１０上の各格子点は、第一画像データと第二画像データとの第一方向上の文字画素の最適な対応関係を示す。例えば、横軸方向のインデックス値である第一インデックス値がＮ１番目に位置する最短経路上の格子点Ｒ２０は、第一画像上の１番目の行要素のＮ１番目の画素列と、当該第一画像上の画素列と特徴量が類似する第二画像上の画素列との対応関係を示す。行要素の第一方向上の終端は改行位置に対応するため、第一画像上の各行要素が第一方向にＮ１個の画素列を有する場合、第一インデックス値がＮ１の整数倍の格子点は、第一画像上の改行位置に対応する第二画像上の画素列を示し得る。プロセッサ１は、処理１１０において、最短経路上の格子点のうち、第一インデックス値がＮ１の整数倍の格子点Ｒ２０を参照することにより、第一画像上の行要素の終端画素列に対応する第二画像上の画素列を特定することができる。第一画像上のある行要素の終端画素列に対応する格子点が複数存在する場合、縦軸方向のインデックス値である第二インデックス値が最小の格子点を改行位置の格子点として選択してもよい。例えば、プロセッサ１は、第一インデックス値がＮ１の複数の格子点を検知した場合、第二インデックス値が最小の格子点を改行位置の格子点として選択し得る。なお、図１９において、格子点Ｒ２０が示す第二インデックス値ｙ１は、以下の式（６）及び式（７）を用いることで、第二画像上の行要素（行画像データ）のインデックス値ｌと、行画像データ上の画素列のインデックス値ｊとに変換し得る。なお、Ｎ２は、第二画像上の各行要素が第一方向に有する画素列の個数を示す。
2018072903.tif 000008
2018072903.tif 000009
【００７４】
プロセッサ１は、処理Ｓ１１０において、第一画像上の改行位置に対応する第二画像上の行要素のインデックス値ｌと当該行要素における画素列のインデックス値ｊとを取得した後、処理Ｓ１０５で取得した文字認識結果情報を参照し、文字認識結果情報の情報要素のうち改行コードに対応する文字コードが設定されている情報要素を削除し、第一画像上の改行位置に対応する箇所に改行コードが設定された情報要素を挿入する。
【００７５】
第一画像上の改行位置に対応する第二画像上の行要素のインデックス値ｌと当該行要素における画素列のインデックス値ｊとに基づき、認識結果情報における改行位置の挿入箇所を特定する方法として、種々の手法を用いることができる。例えば、プロセッサ１は、認識結果情報が有する各文字要素の文字枠情報を参照し、各文字枠情報により特定される第二画像上の文字枠の位置とインデックス値（ｌ，ｊ）で特定される第二画像上の行要素の画素列の位置とを照合することで、文字の並び方向においてインデックス値（ｌ，ｊ）で特定される画素列の直前に配置される文字枠を特定することができる。例えば、プロセッサ１は、処理Ｓ１０６において生成した第二画像データの行領域情報Ｔ４０を参照し、処理Ｓ１１０において特定された第一画像上の改行位置に対応する第二画像上のインデックス値ｌで参照される行要素を行領域情報から取得する。そして、プロセッサ１は、認識結果情報Ｔ１０の各文字要素が有する文字枠情報に設定された文字枠位置のＹ座標値が、インデックス値ｌの行要素が有する上端Ｙ座標値に近似する文字枠情報を特定する。例えば、プロセッサ１は、各文字枠情報に設定された文字枠位置のＹ座標値とインデックス値ｌの行要素が有する上端Ｙ座標値との差分が所定の閾値未満の場合に両者が近似すると判定すればよい。所定の閾値としては、行領域の高さ（縦方向の長さ）よりも小さい任意の値を設定すればよい。そして、プロセッサ１は、特定された文字枠情報のうち、文字枠情報が有する文字枠位置のＸ座標値に文字枠の幅を加算した値が、第一画像上の改行位置に対応する第二画像上のインデックス値ｊに最も近い文字枠情報を選択する。プロセッサ１は、その選択された文字枠情報を有する文字要素の次の位置に改行コードを設定した文字要素を挿入すればよい。別言すると、第二画像から取得した文字認識結果から、第二画像上の改行位置に対応する改行コードが削除され、当該文字認識結果に、第一画像上の改行位置に対応する改行コードが挿入されればよい。
【００７６】
インデックス値（ｌ，ｊ）に基づき認識結果情報における改行位置の挿入箇所を特定する方法の変形例として、プロセッサ１は、例えば、インデックス値（１，１）で特定される画素列からインデックス値（ｌ，ｊ）で特定される画素列までの複数の画素列からなる画像から、画像処理プログラム２３の文字認識処理２３１を用いて、第二の文字認識結果を取得し、処理Ｓ１０５で取得した文字認識結果（第一の文字認識結果）と第二の文字認識結果とを照合し、第一の文字認識結果において第二の文字認識結果と一致する範囲を特定することで、改行位置を特定してもよい。
【００７７】
図２０は、ＤＰマッチング処理により得られた最短経路上の格子点を介して第一画像と第二画像との画素列の対応関係を特定する処理の一例を示した図である。図２０では、図１９と同様に、第一画像上の行要素数をＫとし、第一画像上の各行画像の画素列の数をＮ１とした場合の、Ｋ×Ｎ１個の各画素列の第一特徴量が横軸方向に並べられている。また、第二画像上の行要素数をＬとし、第一画像上の各行画像の画素列の数をＮ２とした場合の、Ｌ×Ｎ２個の各画素列の第二特徴量が縦軸方向に並べられている。ただし、図２０では、第一画像上の行要素数Ｋは２であり、第二画像上の行要素数Ｌは２である。また、図２０において、第一画像及び第二画像の一部の画素列については図示を省略している。
【００７８】
図２０の横軸方向に並べられたＫ×Ｎ１個の画素列は、第一倍率で文字列「ＡＢＣ」を描画する文字画素を有する行画像データＡ１０に対応する部分と、第一倍率で文字列「ＤＥＦ」を描画する文字画素を有する行画像Ａ１１に対応する部分とを含む。また、図２０の縦軸方向に並べられたＬ×Ｎ２個の画素列は、第二倍率で文字列「ＡＢＣＤ」を描画する文字画素を有する行画像データＡ２０に対応する部分と、第二倍率で文字列「ＥＦ」を描画する文字画素を有する行画像Ａ２１に対応する部分とを含む。行画像Ａ２０には、文字認識結果の文字枠Ａ２０１〜Ａ２０４が図示されている。また、行画像Ａ２１には、文字認識結果の文字枠Ａ２１１〜Ａ２１２が図示されている。
【００７９】
図２０の横軸方向には、第一画像上の行画像データが有するＫ×Ｎ１個の画素列の第一インデックス値ｘ｛ｘ＝１，・・・，Ｋ×Ｎ１｝Ａ５０に対応付けて、各画素列の第一特徴量Ａ５１が図示されている。また、図２０の縦軸方向には、第二画像上の行画像データが有するＬ×Ｎ２個の画素列の第二インデックス値ｙ｛ｙ＝１，・・・，Ｌ×Ｎ２｝Ａ５２に対応付けて、各画素列の第二特徴量Ａ５３が図示されている。なお、図２０に示す第一特徴量Ａ５１及び第二特徴量Ａ５３の値は、実施例１の説明の用に設定された一例であり、必ずしも正確な演算結果を反映したものとは限らない点に留意されたい。
【００８０】
図２０において、プロセッサ１は、横軸方向に並べられたＫ×Ｎ１個の画素列の第一特徴量と縦軸方向に並べられたＬ×Ｎ２個の画素列の第二特徴量との類似性距離ｄに基づいて、各格子点における最小累積距離Ａ４０を算出し、各格子点の最小累積距離Ａ４０に基づいて最短経路Ａ３０を特定する。図２０の最短経路Ｒ１０ａは、各格子点における最小累積距離Ａ４０のうち、左下から右上へと辿る最短経路Ｒ１０ａ上に位置する格子点の最小累積距離値を矩形で囲むことで示している。なお、図２０における各格子点の最小累積距離Ａ４０及び最短経路Ｒ１０ａは、実施例１の説明の用に設定された一例であり、必ずしも正確な演算結果を反映したものとは限らない点に留意されたい。プロセッサ１は、最短経路Ｒ１０ａ上の格子点の横軸方向のインデックス値である第一インデックス値を参照することで、行画像Ａ１０の第一方向における終端位置Ａ１０Ｅに対応する画素列の第一インデックス値Ｘ１１で特定される格子点Ｒ２０ａを取得することができる。格子点Ｒ２０ａは、最短経路Ｒ１０ａ上の格子点のうち、第一インデックス値Ｘ１１と第二インデックス値Ｙ１１との対応関係を示す格子点である。これにより、第二画像上の行画像Ａ２０の第一方向における終端位置Ａ２０Ｅに対応する画素列の第二インデックス値Ｙ１２とは異なる第二インデックス値Ｙ１１が、第一画像上の改行位置（第一インデックス値Ｘ１１）に対応することが特定できる。
【００８１】
プロセッサ１は、格子点Ｒ２０ａの縦軸方向のインデックス値である第二インデックス値を参照することで、縦軸方向に並べられた第二画像上のＬ×Ｎ２個の画素列のうち、行画像Ａ１０の終端位置Ａ１０Ｅに対応する画素列のインデックス値Ｙ１１を特定することができる。プロセッサ１は、上述の式（６）及び式（７）を用いることで、インデックス値Ｙ１１を、第二画像上の行要素のインデックス値ｌと、行画像データ上の画素列のインデックス値ｊとに変換することができる。
【００８２】
図２０において、プロセッサ１は、第二画像の行領域情報を参照し、インデックス値Ｙ１１から変換されたインデックス値ｌで特定される行要素Ａ２０を参照し、行要素Ａ２０の上端Ｙ座標値と、認識結果情報Ｔ１０の各文字要素が有する文字枠情報に設定された文字枠位置のＹ座標値との差分が所定の閾値未満の文字枠情報を特定する。その結果、図２０の例では、文字枠Ａ２０１、文字枠Ａ２０２、文字枠Ａ２０３、文字枠Ａ２０４が特定される。次に、プロセッサ１は、特定された文字枠Ａ２０１〜文字枠Ａ２０４の各オフセット位置に各文字枠の幅（横軸方向の長さ）を加算することで、各文字枠の右端のＸ座標値を算出する。そして、プロセッサ１は、特定された文字枠Ａ２０１〜文字枠Ａ２０４のうち、文字枠の右端のＸ座標値が、インデックス値Ｙ１１から変換されたインデックス値ｊに最も近い文字枠を選択する。その結果、図２０の例では、文字枠Ａ２０３が選択される。プロセッサ１は、選択された文字枠Ａ２０３に関する文字枠情報を有する文字要素の次の位置に、改行コードを設定した文字要素を挿入する。すなわち、図２０の例において、文字枠Ａ２０３に関する文字認識結果と文字枠Ａ２０４に関する文字認識結果との間に、改行コードが挿入される。
【００８３】
図２１は、図２０の例により改行位置が変換された後の文字認識結果を表す認識結果情報Ｔ１０のデータ構造の一例を示す図である。本来、第二画像データから得られる文字認識結果は、図９に示すように、文字列「ＡＢＣＤＥＦ」が文字「Ｄ」と文字「Ｅ」との間で改行されているため、文字「Ｄ」に対応する文字コード「０ｘ４４」を示す文字要素の直後に改行コード「０ｘ０Ａ」を示す文字要素を格納する。しかし、第一画像に描画された文字画素のレイアウトに整合するように改行位置が変換された結果、図２１に示す例では、改行コード「０ｘ０Ａ］を示す文字要素Ｔ１５ａが文字「Ｃ」に対応する文字コード「０ｘ４３」を示す文字要素Ｔ１４の直後に格納されている。これは、第一画像では、文字列「ＡＢＣＤＥＦ」が文字「Ｃ」と文字「Ｄ」との間で改行されているためである。
【００８４】
以上が、実施例１の説明である。実施例１の一側面によれば、第一画像上の改行位置に対応する第二画像上の位置に基づいて、第二画像から得た文字認識結果に改行コードが挿入される。別言すると、第二画像から得た文字認識結果における改行位置を、第一画像に描画された文字画素のレイアウトと整合する位置に補正することができる。そのため、ブラウザの表示結果から画面キャプチャ機能により取得した文書画像の文字認識の精度を向上させつつ、第一倍率で描画された文字画素のレイアウトを文字認識結果に反映することができる。これにより、例えば、通常使用されることが想定される表示倍率を第一倍率とし、それよりも大きい表示倍率を第二倍率とすることで、第二倍率で描画された高解像度の文字画素を用いて文字認識を行うため文字認識精度を向上させるとともに、通常使用される表示倍率でブラウザ上に描画された文字画素のレイアウトに整合した位置に改行を有する文字コード列を取得することができる。この様にして取得した文字コード列は、例えば、クロスブラウザチェックの自動化に有用である。あるいは、ブラウザの表示内容を合成音声で読み上げるサービスを提供するうえで、改行位置に応じて読み上げの間隔を広げることで、ブラウザ上の表示レイアウトに整合した自然な読み上げの実現に有用である。
【００８５】
＜実施例２＞
図２２は、実施例２に係る文字認識装置１００の構成の一例を示す図である。図２２に示す文字認識装置１００は、位置変換処理２１８Ａを備える点で、図１に示す構成例と相違する。実施例２に係る文字認識装置１００のプロセッサ１は、位置変換処理２１８Ａを実行することで、対応関係取得処理２１６の処理により取得した第一画像上の文字画素と第二画像上の文字画素との対応関係と、第一画像と第二画像との比率（変換率）とに基づき、第二画像データに対する文字認識結果における文字枠の位置を、第一画像データ上の位置に変換する位置変換処理を実行するように構成される。
【００８６】
図２３は、実施例２に係る位置変換処理の流れの一例を示す図である。実施例２に係る文字認識装置１００のプロセッサ１は、例えば、図５に示す文字認識処理により文字認識結果の改行位置の調整が行われたことを契機として、図２３に示す位置変換処理の実行を開始してもよい。あるいは、実施例２に係る文字認識装置１００のプロセッサ１は、利用者の操作に応じて入力装置４から文字認識プログラム２１をプロセッサ１に実行開始させるための入力信号がプロセッサ１に供給されたことを契機として、図２３に示す位置変換処理の実行を開始してもよい。その際、図５に示す文字認識処理の結果が記憶装置２に記憶されていない場合、プロセッサ１は、図５に示す文字認識処理の実行を開始させ、文字認識処理の実行結果を得た後に、図２３に示す位置変換処理の実行を開始するように動作してもよい。別言すると、実施例２に係るプロセッサ１は、利用者の操作に応じて入力装置４から文字認識プログラム２１をプロセッサ１に実行開始させるための入力信号が供給された際に、図５に示す文字認識処理の結果が記憶装置２に記憶されている場合、図５に示す文字認識処理の実行を省略して、図２３に示す位置変更処理の実行を開始するように動作してもよい。
【００８７】
プロセッサ１は、第二画像データの行領域情報Ｔ４０から、行要素を一つ取り出す（Ｓ２０１）。ここで、「行要素を一つ取り出す」とは、行領域情報に格納される１以上の行要素をインデックス順に参照することを意味し、「行要素を一つ取り出す」処理を行った後であっても、行領域情報に格納される行要素の個数に影響は無いものとする。すなわち、以下の説明において、「行要素を一つ取り出す」ことは「行要素を参照する」ことと同義である。他の情報要素についても同様である。また、行領域情報に格納される１以上の行要素をインデックス値順に参照する際に用いる行要素のインデックス値ｉｎｄ＿ｌは、初期値が１であり、行領域情報Ｔ４０の要素数Ｔ４１に示される値が上限値である。図２３に示される位置変更処理の流れにおいて、処理Ｓ２０１の一回の実行により第二画像データの行領域情報からインデックス値順に取り出される行要素は一個である。別言すると、処理Ｓ２０１により第二画像データの行領域情報から行要素が取り出される毎に、行要素のインデック値ｉｎｄ＿ｌには１が加算される。
【００８８】
プロセッサ１は、処理Ｓ２０１で取得した第二画像の行要素に設定された上端Ｙ座標値（第二基準値）を取得する（Ｓ２０２）。ここで、変数名「上端Ｙ座標値」における「上端」とは、左上隅を原点とし、右方向に進むにつれてＸ座標値が増加し、下方向に進むにつれてＹ座標値が増加する二次元座標で示される座標系における行領域の上端を意味する。別言すると、行領域の外縁を規定する座標のうち、Ｙ座標の最小値が「上端Ｙ座標値」に相当する。
【００８９】
プロセッサ１は、図５に示す処理Ｓ１１０の改行位置判定処理後の認識結果情報Ｔ１０から、インデックス値順に文字要素を一つ取り出す（Ｓ２０３）。処理Ｓ２０３において、プロセッサ１が認識結果情報Ｔ１０から文字要素を取り出す際に用いる文字要素のインデックス値は、初期値が１であり、認識結果情報Ｔ１０の要素数Ｔ１１に示される値が上限値である。また、図２３に示される位置変換処理の流れにおいて、処理Ｓ２０３の一回の実行により認識結果情報Ｔ１０からインデックス値順に取り出される文字要素は一個である。別言すると、処理Ｓ２０３により認識結果情報Ｔ１０から文字要素が取り出される毎に、文字要素のインデックス値には１が加算される。
【００９０】
プロセッサ１は、文字要素に設定された文字コードと改行コードとを比較し、文字要素に設定された文字コードが改行コードであるか否かを判定する（Ｓ２０４）。例えば、プロセッサ１は、文字要素に設定された文字コードが改行コードと一致しない場合、文字要素に設定された文字コードは改行コードではないと判定すればよい。
【００９１】
処理Ｓ２０４において、文字要素に設定された文字コードが改行コードではない場合（Ｓ２０４でＮＯ）、プロセッサ１は、文字要素に格納された文字枠情報を取得する（Ｓ２０５）。一方、処理Ｓ２０４において、文字要素に設定された文字コードが改行コードであった場合（Ｓ２０４でＹＥＳ）、プロセッサ１は、後述する処理Ｓ２１６を実行すればよい。
【００９２】
プロセッサ１は、処理Ｓ２０５で取得した文字枠情報の文字枠位置のＸ座標値ｉｎｄ＿ｊと、処理Ｓ２０１で行要素を取り出す際に用いたインデクス値ｉｎｄ＿ｌとから、以下の式（８）を用いることで、ＤＰマッピング上の第二インデックス値ｉｎｄ＿ｙを取得する。なお、Ｎ２は、第二画像データの行要素が有する画素列の個数を示し、第二画像データの幅（横軸方向の長さ）を示す値と等価である。
2018072903.tif 000010
【００９３】
プロセッサ１は、図５に示す処理Ｓ１０９により取得した対応関係を参照し、第二インデックス値に対応する格子点を特定し、ＤＰマッピング上の第一インデックス値を取得する（Ｓ２０７）。処理Ｓ２０７の動作を、図２４を用いて説明する。図２４は、図２０の例と同様に、ＤＰマッチング処理により得られた最短経路上の格子点を介して第一画像と第二画像との画素列の対応関係を特定する処理の一例を示した図である。図２４では、位置変換処理において実行される処理Ｓ２０６により取得される第二インデックス値Ｙ２１〜Ｙ２６が示されている。ただし、処理Ｓ２０６の一回の実行で得られる第二インデックス値は、第二インデックス値Ｙ２１〜Ｙ２６のうち何れか一である。
【００９４】
図２４の例では、第二画像データから取得される行要素が、行要素Ａ２０、行要素Ａ２１の順に行領域情報Ｔ４０に格納されている。また、第二画像データから取得される文字要素が、文字要素Ａ２０１、文字要素Ａ２０２、文字要素Ａ２０３、文字要素Ａ２０４、文字要素Ａ２１１、文字要素Ａ２１２の順に認識結果情報Ｔ１０に格納されている。ただし、図５に示す処理Ｓ１１０の改行位置判定処理後の認識結果情報Ｔ１０には、文字要素Ａ２０３と文字要素Ａ２０４との間に、改行コードの文字要素が挿入されている。
【００９５】
図２４の例において、プロセッサ１は、一回目の処理Ｓ２０１の実行により行領域情報から行要素Ａ２０を取得し、一回目の処理Ｓ２０３の実行により認識結果情報から文字要素Ａ２０１を取得する。なお、「一回目の実行」とは、図２３に示す処理の開始から終了までの一連の流れにおける実行回数を示し、図２３に示す処理の終了に到達した後、図２３に示す処理を開始する契機が到来した場合は、「一回目の実行」となり得る。図２４の例において、プロセッサ１は、文字要素Ａ２０１に格納された文字枠情報を取得し（Ｓ２０５）、文字枠情報の文字枠位置を用いて文字要素Ａ２０１に関する第二インデックス値Ｙ２１を取得する（Ｓ２０６）。プロセッサ１は、図５に示す処理Ｓ１０９により取得した対応関係を参照し、第二インデックス値Ｙ２１に対応する格子点Ｒ２１を取得する（Ｓ２０７）。そして、プロセッサ１は、格子点Ｒ２１に示される対応関係に基づいて、第二インデックス値Ｙ２１に対応する第一インデックス値Ｘ２１を取得する。図２４には、文字要素Ａ２０１と同様に、文字要素Ａ２０２の第二インデックス値Ｙ２２に対応する格子点Ｒ２２を用いて特定される第一インデックス値Ｘ２２と、文字要素Ａ２０３の第二インデックス値Ｙ２３に対応する格子点Ｒ２３を用いて特定される第一インデックス値Ｘ２３と、文字要素Ａ２０４の第二インデックス値Ｙ２４に対応する格子点Ｒ２４を用いて特定される第一インデックス値Ｘ２４と、文字要素Ａ２１１の第二インデックス値Ｙ２５に対応する格子点Ｒ２５を用いて特定される第一インデックス値Ｘ２５と、文字要素Ａ２１２の第二インデックス値Ｙ２６に対応する格子点Ｒ２６を用いて特定される第一インデックス値Ｘ２６とが図示されている。
【００９６】
図２３の説明に戻る。プロセッサ１は、処理Ｓ２０７で取得した第一インデックス値ｉｎｄ＿ｘを、以下の式（９）及び式（１０）を用いて、第一画像上の行要素のインデックス値ｉｎｄ＿ｋと、第一画像上のＸ座標値ｉｎｄ＿ｉとに変換する（Ｓ２０８）。
2018072903.tif 000011
2018072903.tif 000012
【００９７】
プロセッサ１は、処理Ｓ２０８で取得した第一画像上の行要素のインデックス値ｉｎｄ＿ｋを用いて、第一画像データの行領域情報Ｔ４０から対応する行要素を取り出す（Ｓ２０９）。すなわち、処理Ｓ２０８で取得されるインデックス値ｉｎｄ＿ｋは、処理２０３で取得された文字要素に対応する第一画像上の文字要素が属する第一画像上の行要素を示すインデックス値である。
【００９８】
プロセッサ１は、処理Ｓ２０９で取得した行要素の上端Ｙ座標値（第一基準値）を取得し（Ｓ２１０）、処理Ｓ２０５で取得した文字枠情報の文字枠位置のＹ座標値と、第一基準値との差分（Ｙ値差分）を取得する（Ｓ２１１）。
【００９９】
プロセッサ１は、第一画像データと第二画像データとの変換率を用いて、処理Ｓ２１１で取得したＹ値差分と、処理Ｓ２０５で取得した文字枠情報の幅及び高さと、を第一画像のスケールに変換する（Ｓ２１２）。処理Ｓ２１２において、第一画像データと第二画像データとの変換率は、例えば、第二方向がＹ軸（縦方向）である場合、第一画像データから取得した各行画像の高さ（Ｙ軸方向の長さ）を合計した値と、第二画像データから取得した各行画像の高さを合計した値との比率に基づいて定めればよい。あるいは、図５に示す処理Ｓ１０１及び処理Ｓ１０３でブラウザ２２に設定した表示倍率である第一倍率と第二倍率との比率に基づいて、第一画像データと第二画像データとの変換率を定めてもよい。処理Ｓ２１２において、プロセッサ１は、第一画像のスケールへの変換として、例えば、変換率を用いて各値を縮小する演算を行う。
【０１００】
プロセッサ１は、処理Ｓ２１０で取得した第一基準値と変換後のＹ値差分とを用いて、第一画像上の文字枠の文字枠位置のＹ座標値（変換後Ｙ座標値）を取得する（Ｓ２１３）。別言すると、処理Ｓ２１３で取得される変換後Ｙ座標値は、処理Ｓ２０５で取得された文字枠情報の文字枠位置を、第一画像上の座標空間に写像した値に相当する。
【０１０１】
図２５は、実施例２に係る位置変換処理の処理Ｓ２１１乃至処理Ｓ２１３において用いられるＹ値差分の一例を示す図である。図２５では、説明の便宜のため、第二画像データＣ２０の一部が拡大されて示されている。図２５の例示において、プロセッサ１は、第二画像の行領域情報から取得される１番目の行要素（文字「Ａ」の文字要素）の上端Ｙ座標値（第一基準値）Ｌ２１−１と、認識結果情報から取得される１番目の文字要素に格納される文字枠情報の文字枠位置Ｃ２１−１とのＹ軸上の差分をとることで、Ｙ値差分Ｌ２１−２が得られる。また、図２５には、第二画像の行領域情報から取得される２番目の行要素の上端Ｙ座標値（第一基準値）Ｌ２２−１と、認識結果情報から取得される文字「Ｅ」の文字要素に格納される文字枠情報の文字枠位置Ｃ２５−１とのＹ軸上の差分である、Ｙ値差分Ｌ２２−２が図示されている。これらＹ値差分Ｌ２１−２及びＬ２２−２は、第一画像上の座標空間に写像した場合、第一画像のスケールに従って縮小される。そのため、処理Ｓ２１２では、変換率を用いてＹ値差分を縮小することで、Ｙ値差分が第一画像のスケールに変換される。
【０１０２】
図２３の説明に戻る。プロセッサ１は、変換後の値を用いて、処理Ｓ２０５で認識結果情報Ｔ１０の文字要素から取得された文字枠情報の値を更新する（Ｓ２１４）。例えば、プロセッサ１は、処理Ｓ２０８で取得した変換後Ｘ座標値と、処理Ｓ２１３で取得した変換後Ｙ座標値とを用いて、文字枠情報の文字枠位置を更新する。また、プロセッサ１は、処理Ｓ２１２で取得した変換後の幅及び高さを用いて、文字枠情報の幅及び高さを更新する。なお、処理Ｓ１０７において、第一特徴量を取得する際に変換率に基づいて第一方向への拡大処理を行った場合、プロセッサ１は、変換率を用いて変換後Ｘ座標値を縮小し、変換率で縮小した変換後Ｘ座標値を用いて文字枠情報を更新すればよい。
【０１０３】
プロセッサ１は、認識結果情報Ｔ１０に、次の文字要素があるか否か判定する（Ｓ２１５）。例えば、処理Ｓ２０３の実行後に１を加算された文字要素のインデックス値が認識結果情報の要素数Ｔ１１に示される値を超えた場合、プロセッサ１は次の文字要素が無い（処理Ｓ２１５でＮＯ）と判定してもよい。一方、処理Ｓ２０３の実行後に１を加算された文字要素のインデックス値が認識結果情報の要素数Ｔ１１に示される値以下の場合、プロセッサ１は次の文字要素がある（処理Ｓ２１５でＹＥＳ）と判定してもよい。
【０１０４】
処理Ｓ２１５において、認識結果情報に次の文字要素があると判定された場合（Ｓ２１５でＹＥＳ）、プロセッサ１は、上述の処理Ｓ２０３以降の処理を実行してもよい。一方、処理Ｓ２０３において、認識結果情報に次の文字要素がないと判定された場合（Ｓ２１５でＮＯ）、プロセッサ１は、第二画像データの行領域情報に次の行要素があるか否かを判定する（Ｓ２１６）。例えば、処理Ｓ２０１の実行後に１を加算された行要素のインデックス値が行領域情報の要素数Ｔ４１に示される値を超えた場合、プロセッサ１は次の行要素が無い（Ｓ２１６でＮＯ）と判定してもよい。一方、処理Ｓ２０１の実行後に１を加算された行要素のインデックス値が行領域情報の要素数Ｔ４１に示される値以下の場合、プロセッサ１は、次の行要素がある（Ｓ２１６でＹＥＳ）と判定してもよい。
【０１０５】
処理Ｓ２１６において、第二画像データの行領域情報に次の行要素があると判定された場合（Ｓ２１６でＹＥＳ）、プロセッサ１は、処理Ｓ２０１以降の処理を実行してもよい。一方、処理Ｓ２１６において、第二画像データの行領域情報に次の行要素が無いと判定された場合（Ｓ２１６でＮＯ）、プロセッサ１は、図２３に示す位置変換処理を終了すればよい。この場合、認識結果情報Ｔ１０に格納される全ての文字枠情報について、位置変換処理が実行されたこととなる。
【０１０６】
以上が、実施例２の説明である。実施例２の一側面によれば、第一画像上の改行位置に対応する第二画像上の位置に基づいて、第二画像から得た文字認識結果に改行コードが挿入された文字認識結果に格納される文字枠の位置が、第一画像の座標空間に写像される。そのため、ブラウザの表示結果から画面キャプチャ機能により取得した文書画像の文字認識の精度を向上させつつ、文字認識結果に格納される文字枠の情報を第一倍率で描画された文字画素のレイアウトに整合するように調整することができる。これにより、例えば、通常使用されることが想定される表示倍率を第一倍率とし、それよりも大きい表示倍率を第二倍率とすることで、第二倍率で描画された文字画素を用いて文字認識を行うことで文字認識精度を向上させるとともに、通常使用される表示倍率でブラウザ上に描画された文字画素のレイアウトに整合した位置を有する文字枠の情報を取得することができる。この様にして取得した文字枠の情報は、例えば、クロスブラウザチェックを自動化する際に、ブラウザ間で表示上の不一致が検出された箇所に文字枠を表示して、検査者に確認すべき文字要素を通知する上で有用である。あるいは、ブラウザの表示内容を合成音声で読み上げるサービスを提供するうえで、ブラウザ上の表示レイアウトに整合した読み上げ位置に対応する文字枠を点滅させるなどして、読み上げの進行状況を利用者に通知する上で有用である。
【０１０７】
＜実施例３＞
図２６は、実施例３に係る検証装置２００の構成例を示す図である。図２６に示す検証装置２００は、ブラウザＡ２２−１とブラウザＢ２２−２とでの表示上の相違を検出するクロスブラウザテスト（ＸＢＴ）を実行する装置であって、実施例２に係る文字認識プログラム２１を適用した装置の一例である。図２６に示す検証装置２００において、図１及び図２２に示す文字認識装置１００と同じ構成については、同じ参照符号を付し、説明を省略する。
【０１０８】
図２６に示す検証装置２００は、図１及び図２２に示す文字認識装置１００と同様に、プロセッサ１、記憶装置２、表示装置３、入力装置４、通信装置５を備える。記憶装置２には、文字認識プログラム２１と、異なる種類のブラウザであるブラウザＡ２２−１及びブラウザＢ２２−２と、画像処理プログラム２３と、検証プログラム２４Ａとが格納されており、記憶装置２に格納された各種プログラムをプロセッサ１が実行することで、検証装置２００として動作する。
【０１０９】
ブラウザＡ２２−１及びブラウザＢ２２−２は、異なる種類のブラウザプログラムである。例えば、ブラウザＡ２２−１はマイクロソフト社が開発するＷｅｂブラウザ「ＩｎｔｅｒｎｅｔＥｘｐｌｏｒｅｒ」とし、ブラウザＢ２２−２はＧｏｏｇｌｅ社が開発するＷｅｂブラウザ「Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ」としてもよい。あるいは、例えば、ブラウザＡ２２−１はＧｏｏｇｌｅ社が開発するＷｅｂブラウザ「Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ」のバージョン「５１．０２７０４」とし、ブラウザＢ２２−２はＧｏｏｇｌｅ社が開発するＷｅｂブラウザ「Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ」のバージョン「２７．０．１４５３」としてもよい。ブラウザＡ２２−１及びブラウザＢ２２−２は、ＨＴＭＬファイルをＷｅｂサーバなどから取得し、ＨＴＭＬファイルの内容に従って文字や画像などを描画したＨＴＭＬ文書を生成するようにプロセッサ１を動作させるプログラムであり、それぞれ描画処理２２１−１及び描画処理２２１−２などをプロセッサ１に実行させるためのプログラム部分を含む。
【０１１０】
検証プログラム２４Ａは、ブラウザＡ２２−１とブラウザＢ２２−２との間での表示上の相違点を検出するようにプロセッサ１を動作させるプログラムであり、第一認識結果取得処理２４１、第二認識結果取得処理２４２、比較処理２４３、相違点出力処理２４４などをプロセッサ１に実行させるためのプログラム部分を含む。
【０１１１】
第一認識結果取得処理２４１は、文字認識プログラム２１を実行して、ブラウザＡ２２−１の描画処理２２１−１を用いて描画されたＨＴＭＬ文書から文字認識結果（第一認識結果）を取得する処理を、プロセッサ１に実行させるプログラムに相当する。
【０１１２】
第二認識結果取得処理２４２は、文字認識プログラム２１を実行して、ブラウザＢ２２−２の描画処理２２１−２を用いて描画されたＨＴＭＬ文書から文字認識結果（第二認識結果）を取得する処理を、プロセッサ１に実行させるプログラムに相当する。
【０１１３】
比較処理２４３は、第一認識結果と第二認識結果とを比較して、文字コードが一致しない箇所を検出する処理を、プロセッサ１に実行させるプログラムに相当する。
【０１１４】
相違点出力処理２４４は、比較処理２４３により検出した相違点を表示装置３などに出力する処理を、プロセッサ１に実行させるプログラムに相当する。
【０１１５】
図２７は、実施例３に係る検証処理の流れの一例を示す図である。実施例３に係る検証装置２００のプロセッサ１は、例えば、利用者の操作に応じて入力装置４から検証プログラム２４Ａをプロセッサ１に実行開始させるための入力信号がプロセッサ１に供給されたことを契機として、図５に示す検証処理の実行を開始してもよい。
【０１１６】
プロセッサ１は、ブラウザＡ２２−１について文字認識プログラム２１を実行し、ブラウザＡ２２−１が有する描画処理２２１−１により描画されたＨＴＭＬ文書から文字認識を行った結果である第一認識結果を取得する（Ｓ３０１）。第一認識結果は、例えば、図２１に示す認識結果情報Ｔ１０と同様のデータ構造を有するものとする。
【０１１７】
プロセッサ１は、ブラウザＢ２２−２について文字認識プログラム２１を実行し、ブラウザＢ２２−２が有する描画処理２２１−２により描画されたＨＴＭＬ文書から文字認識を行った結果である第二認識結果を取得する（Ｓ３０２）。第二認識結果は、例えば、図２１に示す認識結果情報Ｔ１０と同様のデータ構造を有するものとする。
【０１１８】
プロセッサ１は、第一認識結果と第二認識結果とを比較して、文字コードが一致しない箇所を相違点として検出する（Ｓ３０３）。プロセッサ１は、文字要素のインデックス順に、第一認識結果及び第二認識結果の文字要素が有する文字コードを比較し、文字コードが一致しない文字要素を相違点として検出すればよい。例えば、処理Ｓ３０１で取得した第一認識結果は図９に示す認識結果情報Ｔ１０の内容例と同じ内容を有し、処理Ｓ３０２で取得した第二認識結果は図２１に示す認識結果情報Ｔ１０の内容例と同じ内容を有するものと仮定する。この場合、プロセッサ１は、第一認識結果の文字要素と第二認識結果の文字要素とを、文字要素のインデックス順に比較した結果、第一認識結果及び第二認識結果の文字要素［４］と文字要素［５］を相違点として検出する。別言すると、プロセッサ１は、文字要素［１］、文字要素［２］、文字要素［３］、文字要素［６］、文字要素［７］について、第一認識結果と第二認識結果との間で文字コードが一致すると判定する。
【０１１９】
プロセッサ１は、処理Ｓ３０３で検出した相違点を、例えば表示装置３に出力する（Ｓ３０４）。プロセッサ１は、相違点の出力先として、表示装置３に替えて、あるいは表示装置３とともに記憶装置２に相違点に関する情報を出力（書込み）してもよい。プロセッサ１は、例えば、第一認識結果から相違点として検出された文字要素が有する文字枠情報に基づいて、ブラウザＡ２２−１の表示領域上に相違点に関する文字枠を点滅させるなどして、処理Ｓ３０３で検出した相違点を出力するように表示装置３を制御（指示）する。プロセッサ１は、第二認識結果から相違点として検出された文字要素が有する文字枠情報に基づいて、ブラウザＢ２２−２の表示領域上に相違点に関する文字枠を点滅させるなどして、処理Ｓ３０３で検出した相違点を出力するように表示装置３を制御（指示）する。
【０１２０】
以上が、実施例３の説明である。実施例３の一側面によれば、ブラウザの表示結果から画面キャプチャ機能により取得したテキスト画像の文字認識を行う際に、通常使用されることが想定される表示倍率を第一倍率とし、それよりも大きい表示倍率を第二倍率とすることで、第二倍率で描画された高解像度の文字画素を用いて文字認識を行うため文字認識精度を向上させるとともに、通常使用される表示倍率でブラウザ上に描画された文字画素のレイアウトに整合した位置に改行を有する文字コード列を取得することができる。そのため、異なる種類のブラウザからこの様にして取得した文字認識結果を比較することで、文字化けの検出や、改行位置のズレを検出することができる。
【０１２１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば、本明細書の文字認識処理及び位置変換処理の各工程は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、特許請求の範囲に記載された本発明の要旨の範囲内において、工程の順序を入れ替えてもよく、あるいは複数の工程を並列的に実行してもよい。
【０１２２】
本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体（記録媒体）等として実施形態をとることが可能である。例えば、複数の機器から構成されるシステムに適用してもよいし、または、一つの機器からなる装置に適用してもよい。
【０１２３】
本発明は、上述の実施形態の動作を実現する各種プログラム（ソフトウェア）を、システムまたは装置に直接または遠隔から供給し、システムまたは装置のコンピュータが供給されたプログラムを実行することで達成される場合も含む。遠隔からのプログラムの供給方法として、文字認識装置１００及び／又は検証装置２００として動作するコンピュータがインターネットを介してサーバに接続し、サーバから各種プログラムをダウンロードしてもよい。
【０１２４】
本発明は、複数のコンピュータで処理を分散して実行する分散システムに適用してもよい。例えば、第一のコンピュータとして動作するコンピュータが文字認識プログラム２１のうち第一画像取得処理２１０及び第二画像取得処理２１１とブラウザ２２とを実行し、第二のコンピュータとして動作するコンピュータが文字認識プログラムのうち認識結果取得処理２１２乃至改行位置判定処理２１７と画像処理プログラム２３とを実行するようにしてもよい。この場合、第一のコンピュータから第二のコンピュータへ、第一画像データ及び第二画像データが送信され、第二のコンピュータから第一のコンピュータへ、改行位置が調整された後の文字認識結果情報が返信される。分散システムにおける処理分担はこの例に限定されず、適宜変更が可能である。上述の分散システムにおいて、第一のコンピュータは、例えば、スマートフォンなどのクライアント端末であり、第二のコンピュータは、例えば、複数のクライアント端末からのアクセスを許容するサーバである。
【符号の説明】
【０１２５】
１  プロセッサ
２  記憶装置
２１  文字認識プログラム
２１０  第一画像取得処理
２１１  第二画像取得処理
２１２  認識結果取得処理
２１３  行画像取得処理
２１４  第一特徴量取得処理
２１５  第二特徴量取得処理
２１６  対応関係取得処理
２１７  改行位置判定処理
２１８Ａ  位置変換処理
２２  ブラウザ
２２−１  ブラウザＡ
２２−２  ブラウザＢ
２２１  描画処理
２２１−１  描画処理
２２１−２  描画処理
２３  画像処理プログラム
２３１  文字認識処理
２４Ａ  検証プログラム
２４１  第一認識結果取得処理
２４２  第二認識結果取得処理
２４３  比較処理
２４４  相違点出力処理
３  表示装置
４  入力装置
５  通信装置
１００  文字認識装置
２００  検証装置
【図１】
2018072903.tif 000013
【図２】
2018072903.tif 000014
【図３】
2018072903.tif 000015
【図４】
2018072903.tif 000016
【図５】
2018072903.tif 000017
【図６】
2018072903.tif 000018
【図７】
2018072903.tif 000019
【図８】
2018072903.tif 000020
【図９】
2018072903.tif 000021
【図１０】
2018072903.tif 000022
【図１１】
2018072903.tif 000023
【図１２】
2018072903.tif 000024
【図１３】
2018072903.tif 000025
【図１４】
2018072903.tif 000026
【図１５】
2018072903.tif 000027
【図１６】
2018072903.tif 000028
【図１７】
2018072903.tif 000029
【図１８】
2018072903.tif 000030
【図１９】
2018072903.tif 000031
【図２０】
2018072903.tif 000032
【図２１】
2018072903.tif 000033
【図２２】
2018072903.tif 000034
【図２３】
2018072903.tif 000035
【図２４】
2018072903.tif 000036
【図２５】
2018072903.tif 000037
【図２６】
2018072903.tif 000038
【図２７】
2018072903.tif 000039
【手続補正書】
【提出日】平成28年11月22日(2016.11.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
プロセッサ１は、処理Ｓ２０９で取得した行要素の上端Ｙ座標値（第一基準値）を取得し（Ｓ２１０）、処理Ｓ２０５で取得した文字枠情報の文字枠位置のＹ座標値と、処理Ｓ２０２で取得した第二基準値との差分（Ｙ値差分）を取得する（Ｓ２１１）。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図２３
【補正方法】変更
【補正の内容】
【図２３】
2018072903.tif 000040