IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2022-156761データ処理装置、データ処理方法、コンピュータプログラム
<>
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図1
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図2
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図3
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図4
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図5
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図6
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図7
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図8
  • 特開-データ処理装置、データ処理方法、コンピュータプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022156761
(43)【公開日】2022-10-14
(54)【発明の名称】データ処理装置、データ処理方法、コンピュータプログラム
(51)【国際特許分類】
   G06V 30/16 20220101AFI20221006BHJP
   G06V 30/244 20220101ALI20221006BHJP
   G06V 30/194 20220101ALI20221006BHJP
【FI】
G06K9/36
G06K9/62 610B
G06K9/66
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021060608
(22)【出願日】2021-03-31
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110001058
【氏名又は名称】鳳国際弁理士法人
(72)【発明者】
【氏名】平野 雅敏
【テーマコード(参考)】
5B029
5B064
【Fターム(参考)】
5B029AA01
5B029BB02
5B029BB17
5B029EE14
5B029EE16
5B029EE17
5B064AA05
5B064AB02
5B064AB13
5B064BA01
5B064CA05
(57)【要約】
【課題】文字認識に対するフォントの影響を緩和する。
【解決手段】
対象物の撮影画像のデータである撮影画像データを分析することによって、対象物に含まれる文字である対象文字の領域を検出する。文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して認識フォントの同じ文字の画像データを生成するようにトレーニングされた生成モデルに、検出された対象文字の領域の撮影画像の入力画像データを入力することによって、対象文字に対応付けられた認識フォントの対象文字の出力画像データを生成する。出力画像データの文字認識処理を実行することによって、対象文字を認識する。
【選択図】 図9
【特許請求の範囲】
【請求項1】
データ処理装置であって、
対象物の撮影画像のデータである撮影画像データを分析することによって、前記対象物に含まれる文字である対象文字の領域を検出する検出部と、
文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して前記認識フォントの同じ文字の画像データを生成するようにトレーニングされた生成モデルに、検出された対象文字の領域の撮影画像の入力画像データを入力することによって、前記対象文字に対応付けられた認識フォントの前記対象文字の出力画像データを生成する第1生成部と、
前記出力画像データの文字認識処理を実行することによって、前記対象文字を認識する第1認識部と、
を備えるデータ処理装置。
【請求項2】
請求項1に記載のデータ処理装置であって、
前記対象物は、N個(Nは2以上の整数)の対象文字を含み、
前記検出部は、前記N個の対象文字の領域を検出し、
前記第1生成部は、検出されたN個の対象文字のうちのM個(Mは、1以上、N未満の整数)の対象文字であるM個の注目文字のM個の領域のM個の撮影画像のM個の入力画像データを前記生成モデルに入力することによって、前記M個の注目文字をそれぞれ注目文字に対応付けられた認識フォントで表すM個の出力画像データを生成し、
前記データ処理装置は、さらに、
前記M個の注目文字の前記M個の入力画像データと前記M個の注目文字の前記M個の出力画像データとを使用して、前記M個の入力画像データの前記M個の注目文字のフォントがそれぞれ前記注目文字に対応付けられた前記認識フォントであるか否かを判断するフォント判断部と、
前記M個の注目文字のうち1以上の注目文字のそれぞれの前記フォントが前記注目文字に対応付けられた前記認識フォントでないと判断される第1の場合に、前記M個の注目文字以外のN-M個の対象文字のN-M個の領域のN-M個の撮影画像のN-M個の入力画像データを前記生成モデルに入力することによって、前記N-M個の対象文字をそれぞれ対象文字に対応付けられた認識フォントで表すN-M個の出力画像データを生成する第2生成部と、
を備え、
前記第1認識部は、前記第1の場合に、N個の対象文字のN個の出力画像データの前記文字認識処理を実行することによって、前記N個の対象文字を認識し、
前記データ処理装置は、さらに、
前記M個の注目文字の前記フォントがそれぞれ前記注目文字に対応付けられた前記認識フォントであると判断される第2の場合に、前記N個の対象文字の撮影画像の画像データの文字認識処理を実行することによって、前記N個の対象文字を認識する第2認識部を備える、
データ処理装置。
【請求項3】
請求項1または2に記載のデータ処理装置であって、さらに、
認識されたN個の対象文字を使用して、前記対象物の良否を判断する対象物判断部を備える、
データ処理装置。
【請求項4】
データ処理方法であって、
対象物の撮影画像のデータである撮影画像データを分析することによって、前記対象物に含まれる文字である対象文字の領域を検出する検出工程と、
文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して前記認識フォントの同じ文字の画像データを生成するようにトレーニングされた生成モデルに、検出された対象文字の領域の撮影画像の入力画像データを入力することによって、前記対象文字に対応付けられた認識フォントの前記対象文字の出力画像データを生成する第1生成工程と、
前記出力画像データの文字認識処理を実行することによって、前記対象文字を認識する第1認識工程と、
を備えるデータ処理方法。
【請求項5】
請求項4に記載のデータ処理方法であって、

前記対象物は、N個(Nは2以上の整数)の対象文字を含み、
前記検出工程は、前記N個の対象文字の領域を検出し、
前記第1生成工程は、検出されたN個の対象文字のうちのM個(Mは、1以上、N未満の整数)の対象文字であるM個の注目文字のM個の領域のM個の撮影画像のM個の入力画像データを前記生成モデルに入力することによって、前記M個の注目文字をそれぞれ注目文字に対応付けられた認識フォントで表すM個の出力画像データを生成し、
前記データ処理方法は、さらに、
前記M個の注目文字の前記M個の入力画像データと前記M個の注目文字の前記M個の出力画像データとを使用して、前記M個の入力画像データの前記M個の注目文字のフォントがそれぞれ前記注目文字に対応付けられた前記認識フォントであるか否かを判断するフォント判断工程と、
前記M個の注目文字のうち1以上の注目文字のそれぞれの前記フォントが前記注目文字に対応付けられた前記認識フォントでないと判断される第1の場合に、前記M個の注目文字以外のN-M個の対象文字のN-M個の領域のN-M個の撮影画像のN-M個の入力画像データを前記生成モデルに入力することによって、前記N-M個の対象文字をそれぞれ対象文字に対応付けられた認識フォントで表すN-M個の出力画像データを生成する第2生成工程と、
を備え、
前記第1認識工程は、前記第1の場合に、N個の対象文字のN個の出力画像データの前記文字認識処理を実行することによって、前記N個の対象文字を認識し、
前記データ処理方法は、さらに、
前記M個の注目文字の前記フォントがそれぞれ前記注目文字に対応付けられた前記認識フォントであると判断される第2の場合に、前記N個の対象文字の撮影画像の画像データの文字認識処理を実行することによって、前記N個の対象文字を認識する第2認識工程を備える、
データ処理方法。
【請求項6】
請求項4または5に記載のデータ処理方法であって、さらに、
認識されたN個の対象文字を使用して、前記対象物の良否を判断する対象物判断工程を備える、
データ処理方法。
【請求項7】
データを処理するコンピュータのためのコンピュータプログラムであって、
対象物の撮影画像のデータである撮影画像データを分析することによって、前記対象物に含まれる文字である対象文字の領域を検出する検出機能と、
文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して前記認識フォントの同じ文字の画像データを生成するようにトレーニングされた生成モデルに、検出された対象文字の領域の撮影画像の入力画像データを入力することによって、前記対象文字に対応付けられた認識フォントの前記対象文字の出力画像データを生成する第1生成機能と、
前記出力画像データの文字認識処理を実行することによって、前記対象文字を認識する第1認識機能と、
をコンピュータに実現させる、コンピュータプログラム。
【請求項8】
請求項7に記載のコンピュータプログラムであって、
前記対象物は、N個(Nは2以上の整数)の対象文字を含み、
前記検出機能は、前記N個の対象文字の領域を検出し、
前記第1生成機能は、検出されたN個の対象文字のうちのM個(Mは、1以上、N未満の整数)の対象文字であるM個の注目文字のM個の領域のM個の撮影画像のM個の入力画像データを前記生成モデルに入力することによって、前記M個の注目文字をそれぞれ注目文字に対応付けられた認識フォントで表すM個の出力画像データを生成し、
前記コンピュータプログラムは、さらに、
前記M個の注目文字の前記M個の入力画像データと前記M個の注目文字の前記M個の出力画像データとを使用して、前記M個の入力画像データの前記M個の注目文字のフォントがそれぞれ前記注目文字に対応付けられた前記認識フォントであるか否かを判断するフォント判断機能と、
前記M個の注目文字のうち1以上の注目文字のそれぞれの前記フォントが前記注目文字に対応付けられた前記認識フォントでないと判断される第1の場合に、前記M個の注目文字以外のN-M個の対象文字のN-M個の領域のN-M個の撮影画像のN-M個の入力画像データを前記生成モデルに入力することによって、前記N-M個の対象文字をそれぞれ対象文字に対応付けられた認識フォントで表すN-M個の出力画像データを生成する第2生成機能と、
を前記コンピュータに実現させ、
前記第1認識機能は、前記第1の場合に、N個の対象文字のN個の出力画像データの前記文字認識処理を実行することによって、前記N個の対象文字を認識し、
前記コンピュータプログラムは、さらに、
前記M個の注目文字の前記フォントがそれぞれ前記注目文字に対応付けられた前記認識フォントであると判断される第2の場合に、前記N個の対象文字の撮影画像の画像データの文字認識処理を実行することによって、前記N個の対象文字を認識する第2認識機能を前記コンピュータに実現させる、
コンピュータプログラム。
【請求項9】
請求項7または8に記載のコンピュータプログラムであって、さらに、
認識されたN個の対象文字を使用して、前記対象物の良否を判断する対象物判断機能を前記コンピュータに実現させる、
コンピュータプログラム。
【請求項10】
文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して前記認識フォントの同じ文字の画像データを生成するように生成モデルをトレーニングするための学習データの生成方法であって、
文字を表す文書データを使用して、認識フォントと他のフォントとのいずれかである第1フォントの前記文字を表す第1文字画像データを生成する工程と、
前記文書データを使用する文字画像データの生成に使用されるべき前記文字のフォントを、前記第1フォントから、前記認識フォントと前記他のフォントとのうちの前記第1フォントとは異なる第2フォントに変更する工程と、
変更された第2フォントの前記文字を表す第2文字画像データを生成する工程と、
前記第1文字画像データと、前記第2文字画像データと、のペアを含む学習データを記憶装置に格納する工程と、
を備える、生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、文字を認識する技術に関する。
【背景技術】
【0002】
従来から、いわゆるOCR(Optical Character Recognition)などの文字認識技術が、画像中の文字を認識するために利用されている。例えば、プリンタ、複合機、ミシンなどの種々の製品に、ラベルが設けられている。ラベルは、会社名、モデル名、製造番号、認証番号などを示す文字(通常は、文字列)を含んでいる。製造エラーにより、ラベルが誤った文字を含む場合がある。このような文字の誤りを検出するために、ラベルの撮影画像データに対する文字認識を利用可能である。特許文献1は、文字認識の精度のために画像にノイズ除去を行う技術を提案している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-95713号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、文字は、種々のフォントで表され得る。文字認識の精度は、フォントに応じて異なり得る。文字認識の対象物(例えば、ラベル)に含まれる文字のフォントによっては、適切な文字認識が難しい場合があった。
【0005】
本明細書は、文字認識に対するフォントの影響を緩和する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【0007】
[適用例1]データ処理装置であって、対象物の撮影画像のデータである撮影画像データを分析することによって、前記対象物に含まれる文字である対象文字の領域を検出する検出部と、文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して前記認識フォントの同じ文字の画像データを生成するようにトレーニングされた生成モデルに、検出された対象文字の領域の撮影画像の入力画像データを入力することによって、前記対象文字に対応付けられた認識フォントの前記対象文字の出力画像データを生成する第1生成部と、前記出力画像データの文字認識処理を実行することによって、前記対象文字を認識する第1認識部と、を備えるデータ処理装置。
【0008】
この構成によれば、検出された対象文字の領域の撮影画像の入力画像データを生成モデルに入力することによって対象文字に対応付けられた認識フォントの対象文字の出力画像データが生成され、出力画像データの文字認識処理を実行することによって対象文字が認識されるので、認識フォントとは異なるフォントの文字の文字認識処理の精度が、認識フォントの文字の文字認識処理の精度と比べて低い場合であっても、文字認識に対するフォントの影響を緩和できる。
【0009】
[適用例2]文字認識用のフォントである認識フォントとは異なる他のフォントの文字の画像データを使用して前記認識フォントの同じ文字の画像データを生成するように生成モデルをトレーニングするための学習データの生成方法であって、文字を表す文書データを使用して、認識フォントと他のフォントとのいずれかである第1フォントの前記文字を表す第1文字画像データを生成する工程と、前記文書データを使用する文字画像データの生成に使用されるべき前記文字のフォントを、前記第1フォントから、前記認識フォントと前記他のフォントとのうちの前記第1フォントとは異なる第2フォントに変更する工程と、変更された第2フォントの前記文字を表す第2文字画像データを生成する工程と、前記第1文字画像データと、前記第2文字画像データと、のペアを含む学習データを記憶装置に格納する工程と、を備える、生成方法。
【0010】
この構成によれば、適切な学習データを生成できる。
【0011】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、文字認識方法および文字認識装置、検査方法および検査装置、データ処理方法およびデータ処理装置、学習データの生成方法および生成装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
【図面の簡単な説明】
【0012】
図1】一実施例としてのデータ処理装置を示す説明図である。
図2】機械学習モデル500の例を示すブロック図である。
図3】学習データの生成処理の例を示すフローチャートである。
図4】データの例を示す説明図である。
図5】トレーニング処理の例を示すフローチャートである。
図6】トレーニング処理の例を示すフローチャートである。
図7】検査処理の例を示すフローチャートである。
図8】(A)-(G)は、検査処理で処理される画像の例を示す説明図である。
図9】文字認識処理の例を示すフローチャートである。
【発明を実施するための形態】
【0013】
A.第1実施例:
A1.装置構成:
図1は、一実施例としてのデータ処理装置を示す説明図である。本実施例では、データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、対象物(本実施例では、プリンタに貼られたラベルシート)の撮影画像の画像データを処理する(詳細は、後述する)。データ処理装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を備えている。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
【0014】
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、プログラム231、232、233と、学習データ237と、機械学習モデル500と、を格納している。機械学習モデル500は、人工ニューラルネットワークを有する予測モデルである。機械学習モデル500は、生成モデル510と、識別モデル520と、を含んでいる。
【0015】
機械学習モデル500の生成モデル510は、文字の画像データを使用して、文字認識用のフォントである認識フォント(例えば、サンセリフ)の同じ文字の画像データを生成する。本実施例では、認識フォントは、全ての文字に共通である。すなわち、認識フォントは、全ての文字に対応付けられている。ただし、認識フォントは、複数の文字の間で異なってよい。識別モデル520は、生成モデル510のトレーニングのために使用される。本実施例では、機械学習モデル500は、プログラムモジュールである。学習データ237は、機械学習モデル500のトレーニングのための画像データである。第1プログラム231は、学習データ237を生成するためのプログラムである。第2プログラム232は、機械学習モデル500のトレーニングのためのプログラムである。第3プログラム233は、対象物の撮影画像データを使用して、対象物の不具合に関するデータを取得するためのプログラムである。プロセッサ210は、プログラム231、232、233の実行に使用される種々の中間データを、記憶装置215(例えば、揮発性記憶装置220、不揮発性記憶装置230のいずれか)に、一時的に格納する。プログラム231、232、233と、学習データ237と、機械学習モデル500と、の詳細については、後述する。
【0016】
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の指示をデータ処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。通信インタフェース270には、デジタルカメラ100が接続されている。デジタルカメラ100は、プリンタDVに貼られたラベルシートLBを撮影することによって、撮影画像の撮影画像データを生成する。
【0017】
A2.機械学習モデル500の構成:
図2は、機械学習モデル500の例を示すブロック図である。機械学習モデル500は、いわゆる敵対的生成ネットワーク(GAN : Generative Adversarial Networks)を使用して構成されている。機械学習モデル500は、文字のフォントを変換する処理を実行する。機械学習モデル500は、文字の画像Ip1の画像データIp1dを使用して、予め決められた認識フォントの同じ文字の画像Ip3の画像データIp3dを生成するように、トレーニングされる。入力画像Ip1としては、認識フォントとは異なるフォントの画像を含む種々の画像が、使用され得る。以下、機械学習モデル500に入力される画像データIp1dを、入力画像データIp1dとも呼び、入力画像データIp1dの画像Ip1を、入力画像Ip1とも呼び、機械学習モデル500から出力される画像データIp3dを、出力画像データIp3dとも呼び、出力画像データIp3dの画像Ip3を、出力画像Ip3とも呼ぶ。なお、本実施例では、画像Ip1、Ip3は、それぞれ、矩形状の画像であり、1文字の画像を示している。また、画像データIp1d、Ip3dは、それぞれ、グレースケールのビットマップデータである。グレーの色値(輝度値とも呼ぶ)は、例えば、ゼロから255までの256階調で表される。
【0018】
機械学習モデル500は、積み重ねられた第1ステージGAN501と第2ステージGAN502とを含んでいる。積み重ねられた複数のGANを有するモデルは、StackGANとも呼ばれる。StackGANとしては、例えば、テキストの記述を使用してテキストの記述に適する画像データを生成するモデルが、使用されている。StackGANは、1個のGANではなく、2個のステージのGANを使用することにより、高解像度の画像データを生成することができる。本実施例の機械学習モデル500は、文字の画像データを使用して、認識フォントの同じ文字の画像データを生成する。画像データを処理するために、機械学習モデル500のGAN501、GAN502は、それぞれ、エンコーダとデコーダを含む生成部を有している。
【0019】
第1ステージGAN501(図2)は、第1生成部310と第1識別部410とを含んでいる。第1生成部310は、入力画像データIp1dを使用して、ぼやけた同じ文字の画像である中間画像Ip2の中間画像データIp2dを生成するように、トレーニングされる。入力画像Ip1の高さと幅は、予め決められている(例えば、256*256(単位は、画素数))。中間画像Ip2の高さと幅は、入力画像Ip1の高さと幅とそれぞれ同じである。なお、中間画像データIp2dは、入力画像データIp1dと同様に、グレースケールのビットマップデータである。
【0020】
第1生成部310は、第1エンコーダ312と、第1デコーダ318と、を含んでいる。第1エンコーダ312は、入力画像データIp1dに対して次元削減処理を実行して、入力画像Ip1の特徴を示す第1特徴データ315を生成する。本実施例では、第1エンコーダ312は、複数の畳込層を有している。各畳込層は、2以上のストライド(例えば、2)を使用して、ダウンサンプリングも行う。第1エンコーダ312は、さらに、バッチノーマリゼーションを使用して構成されてよい。各層の活性化関数は、例えば、LeakyReLUである。
【0021】
第1デコーダ318は、第1特徴データ315に対して次元復元処理を実行して、中間画像データIp2dを生成する。本実施例では、第1デコーダ318は、複数の転置畳込層を有している。各転置畳込層は、2以上のストライド(例えば、2)を使用して、アップサンプリングも行う。第1デコーダ318は、さらに、バッチノーマリゼーションを使用して構成されてよい。各層の活性化関数は、例えば、ReLUである。なお、最後の畳込層に続く活性化関数としては、中間画像Ip2の画像データIp2dの生成に適した関数(例えば、Tanh関数)が使用されてよい。
【0022】
第1識別部410は、実画像データと偽画像データとを識別するように、トレーニングされる。具体的には、第1識別部410は、第1生成部310によって生成された中間画像データIp2dを偽データと識別し、後述する実中間画像Iq2の実中間画像データIq2dを実データと識別するように、トレーニングされる。一方、第1生成部310は、トレーニングされた第1識別部410が中間画像データIp2dを実データと誤って識別するように、トレーニングされる。このようなトレーニングにより、第1生成部310は、実中間画像Iq2に類似する中間画像Ip2の中間画像データIp2dを生成できる。
【0023】
第1識別部410は、入力された画像データに対して次元削減処理を実行して、1次元の値を示す第1出力データ419を生成する。本実施例では、第1識別部410は、複数の畳込層を有している。各畳込層は、2以上のストライド(例えば、2)を使用して、ダウンサンプリングも行う。第1識別部410の最後の畳込層からの出力データは、1次元の値を示している。第1識別部410は、この値をシグモイド関数に入力することによって、第1出力データ419を生成する。第1識別部410は、出力データ419の値が第1閾値(例えば、0.5)以上である場合に、入力されたデータが実データであると識別し、出力データ419の値が第1閾値未満である場合に、入力されたデータが偽データであると識別する。第1出力データ419は、入力された画像データが実データである確率と相関を有する値を示している(「1」は、「実」を示し、「0」は、「偽」を示している)。第1識別部410は、さらに、バッチノーマリゼーションを使用して構成されてよい。各層の活性化関数は、例えば、LeakyReLUである(最後の畳込層を除く)。
【0024】
第2ステージGAN502は、第2生成部320と第2識別部420とを含んでいる。第2生成部320は、中間画像データIp2dを使用して、同じ文字の詳細な形状を示す出力画像データIp3dを生成するように、トレーニングされる。出力画像Ip3の高さと幅とは、入力画像Ip1の高さと幅とそれぞれ同じである。
【0025】
第2生成部320は、第2エンコーダ322と、第2デコーダ328と、を含んでいる。第2エンコーダ322は、中間画像データIp2dに対して次元削減処理を実行して、中間画像Ip2の特徴を示す第2特徴データ325を生成する。本実施例では、第2エンコーダ322の構成は、第1エンコーダ312の構成と同様である(畳込フィルタのサイズ、ストライドなどのネットワーク構成のパラメータは、適宜に調整される)。
【0026】
第2デコーダ328は、第2特徴データ325に対して次元復元処理を実行して、出力画像データIp3dを生成する。本実施例では、第2デコーダ328の構成は、第1デコーダ318の構成と同様である(畳込フィルタのサイズ、ストライドなどのネットワーク構成のパラメータは、適宜に調整される)。
【0027】
第2識別部420は、実画像データと偽画像データとを識別するように、トレーニングされる。具体的には、第2識別部420は、第2生成部320によって生成された出力画像データIp3dを偽データと識別し、後述する実画像Iq3の実画像データIq3dを実データと識別するように、トレーニングされる。一方、第2生成部320は、トレーニングされた第2識別部420が出力画像データIp3dを実データと誤って識別するように、トレーニングされる。このようなトレーニングにより、第2生成部320は、実画像Iq3に類似する出力画像Ip3の出力画像データIp3dを生成できる。
【0028】
第2識別部420は、入力された画像データに対して次元削減処理を実行して、1次元の値を示す第2出力データ429を生成する。本実施例では、第2識別部420の構成は、第1識別部410の構成と同様である(畳込フィルタのサイズ、ストライドなどのネットワーク構成のパラメータは、適宜に調整される)。第2識別部420は、第2出力データ429の値が第2閾値(例えば、0.5)以上である場合に、入力されたデータが実データであると識別し、第2出力データ429の値が第2閾値未満である場合に、入力されたデータが偽データであると識別する。第2出力データ429は、入力された画像データが実データである確率と相関を有する値を示している(「1」は、「実」を示し、「0」は、「偽」を示している)。
【0029】
第1生成部310と第2生成部320との全体は、生成モデル510を形成する。第1識別部410と第2識別部420との全体は、識別モデル520を形成する。識別モデル520は、機械学習モデル500のトレーニングに使用される。
【0030】
A3.学習データ生成処理:
図3は、機械学習モデル500のトレーニングのための学習データの生成処理の例を示すフローチャートである。プロセッサ210(図1)は、第1プログラム231に従って、図3の処理を実行する。図4は、図3の処理で生成される種々のデータの例を示す説明図である。
【0031】
S110では、プロセッサ210は、ラベルシートLB(図1)の画像を示す文書データのフォントを、認識フォントに設定する。図4の左上部の画像DCaは、認識フォントの設定を有する文書データによって表される文書画像の例を示している(第1文書画像DCaとも呼ぶ)。第1文書画像DCaの文字列TXは、認識フォントで表されている。なお、文書データは、ラベルシートLBの製造のために、予め準備されている。なお、製造時のエラーにより、誤った文字列を示すラベルシートが製造され得る。
【0032】
第1文書画像DCaは、文字列TX(具体的には、「EXAMPLE1」)と、グラフィックGと、を含んでいる。文書データは、画像中の文字を示す文字コードデータを含んでいる。文字コードは、文字に割り当てられた識別情報である(例えば、Unicodeに基づくコード)。本実施例では、文書データは、文字コードに加えて、文字のフォントとサイズと色とを示す属性データを含んでいる。さらに、文書データは、グラフィックGを描画する描画コマンドを示すデータを含んでいる。このように文書画像を描画するための文字コードと描画コマンドとを含むデータは、ベクタデータとも呼ばれる。アプリケーションがベクタデータを使用して画像を出力する場合(例えば、印刷、表示、ビットマップデータの生成など)、アプリケーションは、ベクタデータのレンダリング(ラスタライズとも呼ばれる)を行う。レンダリングは、属性データに従って文字を描画し、描画コマンドに従ってグラフィックを描画する。
【0033】
S110(図3)では、プロセッサ210は、文書データの文字列TXの属性データのフォントを、認識フォントに設定する。後述する検査処理では、ラベルシートLBの撮影画像データの文字認識処理が行われる。文字認識処理による文字認識の精度は、文字のフォントによって、異なり得る。認識フォントは、良好な精度に対応付けられたフォントである。なお、本実施例では、認識フォントは、ラベルシートLBの文字列TXの実際のフォント(ラベルフォントとも呼ぶ)とは異なっている。
【0034】
S120では、プロセッサ210は、文書データのレンダリングを行うことによって、第1画像データを生成する。本実施例では、第1画像データは、グレースケールのビットマップデータである。ビットマップデータのデータ形式は、例えば、JPEG(Joint Photographic Experts Group)、 PNG(Portable Network Graphics)、 GIF(Graphic Interchange Format)、 TIFF(Tagged Image File Format)など、複数の画素のそれぞれの色値を表す、未圧縮、または、圧縮済の、種々の形式であってよい。図4の左上部の画像Iaは、第1画像データによって表される画像の例を示している(第1画像Iaとも呼ぶ)。第1画像Iaは、色がグレースケールで表されている点を除いて、第1文書画像DCaと同じである。
【0035】
S130では、プロセッサ210は、予め決められた1以上の学習用のフォントである学習フォント(ラベルフォントを含む)で構成されるフォントリストから注目フォントを選択する。そして、プロセッサ210は、文書データの文字列TXの属性データのフォントを、注目フォントに設定する。図4の右上部の画像DCbは、注目フォントの設定を有する文書データによって表される文書画像の例を示している(第2文書画像DCbとも呼ぶ)。第2文書画像DCbの文字列TXは、注目フォントであるラベルフォントで表されている。
【0036】
S140では、プロセッサ210は、文書データのレンダリングを行うことによって、第2画像データを生成する。このレンダリング処理は、S120のレンダリング処理と同じである。図4の右上部の画像Ibは、第2画像データによって表される画像の例を示している(第2画像Ibとも呼ぶ)。第2画像Ibは、色がグレースケールで表されている点を除いて、第2文書画像DCbと同じである。
【0037】
S150では、プロセッサ210は、第2画像データの加工処理を実行する。加工処理は、第2画像Ibを、デジタルカメラ100によって生成される撮影画像に近づける画像処理である。加工処理は、例えば、ぼかし処理と、ノイズ付加処理と、微小回転処理と、のうちの1以上の処理を含んでいる。図4の右部の画像Ibxは、加工済の第2画像データによって表される画像の例を示している。加工済の第2画像Ibxは、未加工の第2画像Ibよりも、自然な撮影画像のように見える。
【0038】
ぼかし処理は、色値を平滑化する種々の処理であってよい。本実施例では、ぼかし処理は、平滑化フィルタ(例えば、平均値フィルタ、中央値フィルタ、ガウシアンフィルタなど)を使用する平滑化処理である。
【0039】
ノイズ付加処理は、複数の画素の色値にノイズを付加する種々の処理であってよい。本実施例では、ノイズ付加処理は、複数の画素からランダムに複数の対象画素を選択し、複数の対象画素のそれぞれの色値に乱数値を加算する処理である。これに代えて、ノイズ付加処理は、予め準備されたノイズ画像を元の画像に重ねる処理であってよい。
【0040】
微小回転処理は、本実施例では、ランダムに決定された角度(例えば、ゼロ度以上5度以下の角度)に従って、ランダムに決定された方向(右または左)に画像を回転させる処理である。
【0041】
後述するように、S110-S170の処理は、複数回、実行される。プロセッサ210は、S150が実行される毎に異なる画像が生成されるように、加工処理に使用されるパラメータ(例えば、平滑化フィルタ、回転角度など)を、ランダムに決定する。
【0042】
S160では、プロセッサ210は、第1画像データと加工済の第2画像データとから、複数の文字のそれぞれを表す画像データを抽出する(以下、抽出された画像データを、文字画像データとも呼ぶ)。本実施例では、画像Ia、Ibx(図4)内の複数の文字のそれぞれの位置と大きさとは、予め決められた位置と大きさとそれぞれおおよそ同じである。プロセッサ210は、複数の文字のそれぞれに関して、文字に予め対応付けられた矩形領域を示す文字画像データを抽出する。矩形領域の形状は、生成モデル510(図2)によって受け入れられる画像の形状と同じである(ただし、画素密度は異なり得る)。以下、文字画像データによって表される画像を、文字画像とも呼ぶ。
【0043】
図4の左下部の文字画像Ia1-Ia6は、第1画像Iaから抽出される文字画像の例を示している。図4の右下部の文字画像Ib1-Ib6は、加工済の第2画像Ibxから抽出される文字画像の例を示している。S160では、プロセッサ210は、各文字画像の高さと幅とが、図2の生成モデル510によって受け入れられる画像の高さと幅とそれぞれ同じとなるように、各文字画像データの解像度変換処理を行う。
【0044】
S170では、プロセッサ210は、第1画像Iaから抽出された文字画像のデータと、加工済の第2画像Ibxから抽出された文字画像のデータと、のペアであって、同じ文字に対応付けられた文字画像データのペアを、抽出する。例えば、図4の文字画像Ia1と文字画像Ib1とのペアP1は、同じ文字「E」に対応付けられている。本実施例では、2個の画像Ia、Ibx上の同じ位置に、同じ文字が配置されている。プロセッサ210は、2個の画像Ia、Ibx上の同じ位置の領域を示す2個の文字画像データを、ペアとして抽出する。図4の文字画像Ia2-Ia6と文字画像Ib2-Ib6とで形成される他のペアP2-P6も、それぞれ、同じ文字に対応付けられている。
【0045】
プロセッサ210は、抽出されたペアを構成する2個の文字画像データを、互いに関連付けて、記憶装置215(例えば、不揮発性記憶装置230)に格納する。プロセッサ210は、文字列TXに含まれる複数の文字に対応する複数組の文字画像データのペアを、記憶装置215に格納する。1個のペアは、同じ文字の認識フォントの文字画像データと注目フォントの文字画像データとで構成されている。認識フォントの文字画像データは、実画像データとして使用される。注目フォントの文字画像データは、第1生成部310に入力されるべき入力画像データとして使用される。
【0046】
S180では、プロセッサ210は、生成終了条件が満たされるか否かを判断する。生成終了条件は、機械学習モデル500(図2)の適切なトレーニングのための文字画像データの複数組のペアが生成されたことを示す任意の条件であってよい。例えば、生成終了条件は、フォントリストのそれぞれのフォントに関して、生成された文字画像データのペアの総数が、予め決められた基準数以上であることであってよい。
【0047】
生成終了条件が満たされない場合(S180:No)、プロセッサ210は、S110へ移行して、新たな文字画像データのペアを生成する。生成終了条件が満たされる場合(S180:Yes)、S185で、プロセッサ210は、予め決められた文字リストの全ての文字が処理されたか否かを判断する。文字リストは、正しい文字列の複数の文字に加えて、エラーに起因してラベルシートによって示され得る全ての文字を含んでいる。本実施例では、図4の文書画像DCaなどによって示されるように、ラベルシートLBは、ラテンアルファベットとアラビア数字を示す。文字リストは、全ての大文字のラテンアルファベット(AからZ)と、全ての小文字のラテンアルファベット(aからz)と、全てのアラビア数字(0から9)と、を含んでいる。
【0048】
未処理の文字が残っている場合(S185:No)、S190で、プロセッサ210は、文字リストから未処理の1以上の文字を選択し、文書データの文字列を、選択した1以上の文字の文字列に変更する(具体的には、文書データの文字コードデータが、変更される)。文書データによって表される画像中の文字の適切な表現のためには、選択される文字の数は、正しい文字列の文字の数以下であることが好ましい。そして、プロセッサ210は、S110へ移行し、変更済の文字列(すなわち、未処理の1以上の文字の文字列)を示す文書データを使用して、S110-S180の処理を実行する。
【0049】
文字リストの全ての文字が処理された場合(S185:Yes)、プロセッサ210は、図3の処理を終了する。S170で格納された文字画像データの複数組のペアの全体が、学習データ237に相当する。
【0050】
なお、フォントリストは、ラベルフォントに加えて、認識フォントを含んでよい。すなわち、学習データ237は、同じ認識フォントで同じ文字を表す文字画像データのペアを含んでよい。また、プロセッサ210は、複数種類のラベルシートの複数の文書データのそれぞれに関して、図3の処理を実行してよい。すなわち、学習データ237は、複数種類のラベルシートのそれぞれに関する文字画像データのペアを含んでよい。この場合、学習データ237を使用してトレーニングされる機械学習モデル500は、複数種類のラベルシートに共通に使用されてよい。
【0051】
A4.トレーニング処理:
図5図6は、機械学習モデル500(図2)のトレーニング処理の例を示すフローチャートである。図6は、図5の続きの処理を示している。図5の処理は、第1ステージGAN501のトレーニング処理である。図6の処理は、第2ステージGAN502のトレーニング処理である。プロセッサ210(図1)は、第2プログラム232に従って、図5図6の処理を実行する。
【0052】
S210では、プロセッサ210は、機械学習モデル500(図2)の複数の演算パラメータ、すなわち、生成部310、320と識別部410、420とのそれぞれの複数の演算パラメータ(例えば、畳込フィルタの複数の重みと複数のバイアスなど)を、初期化する。例えば、各演算パラメータは、乱数値に設定される。
【0053】
S215では、プロセッサ210(図1)は、学習データ237を参照して、文字画像データの複数組のペアから、注目ペアを選択する。本実施例では、プロセッサ210は、未処理のペアを、注目ペアとして選択する。以下、図2の入力画像データIp1dと実画像データIq3dとが、注目ペアを示していることとする。入力画像Ip1は、フォントリスト中のいずれかの学習フォントの文字画像であり、実画像Iq3は、認識フォントの文字画像である。以下、入力画像Ip1を、学習フォント画像Ip1とも呼び、入力画像データIp1dを、学習フォント画像データIp1dとも呼ぶ。また、実画像Iq3を、認識フォント画像Iq3とも呼び、実画像データIq3dを、認識フォント画像データIq3dとも呼ぶ。
【0054】
S220では、プロセッサ210は、認識フォント画像データIq3dの画像処理を実行して、実中間画像データIq2dを生成する。実中間画像Iq2は、認識フォントのぼやけた文字を表している。以下、実中間画像データIq2dを、認識フォント中間画像データIq2dとも呼ぶ。プロセッサ210は、認識フォント画像データIq3dのぼかし処理を実行することによって、認識フォント中間画像データIq2dを生成する。ぼかし処理は、例えば、平均値フィルタを使用する平滑化処理であってよい。
【0055】
S230では、プロセッサ210は、認識フォント中間画像データIq2dを第1識別部410に入力し、第1出力データ419を算出する。具体的には、プロセッサ210は、第1識別部410の演算パラメータを使用して、第1識別部410の各層の演算を行うことによって、第1出力データ419を算出する。以下、認識フォント中間画像データIq2d(すなわち、実データ)から得られる第1出力データ419を、第1実出力データ419rとも呼ぶ。
【0056】
S240では、プロセッサ210は、学習フォント画像データIp1dを第1生成部310に入力して、中間画像データIp2dを生成する。具体的には、プロセッサ210は、第1生成部310の演算パラメータを使用して、第1生成部310の各層の演算を行うことによって、中間画像データIp2dを算出する。以下、中間画像データIp2dを、偽中間画像データIp2dとも呼び、中間画像Ip2を、偽中間画像Ip2とも呼ぶ。
【0057】
S250では、プロセッサ210は、偽中間画像データIp2dを第1識別部410に入力し、第1出力データ419を算出する。S250の処理は、実中間画像データIq2dに代えて偽中間画像データIp2dが使用される点を除いて、S230の処理と同じである。以下、偽中間画像データIp2dから得られる第1出力データ419を、第1偽出力データ419fとも呼ぶ。
【0058】
S260では、プロセッサ210は、第1実出力データ419rと第1偽出力データ419fとを使用して、予め決められた第1損失関数に従って、第1損失を算出する。第1損失関数は、第1実出力データ419rが「実(1)」に近いほど小さい値を算出し、第1偽出力データ419fが「偽(ゼロ)」に近いほど小さい値を算出するような、種々の関数であってよい。例えば、第1実出力データ419rを、D1rとし、第1偽出力データ419fを、D1fとする場合に、第1損失関数は、以下の関数Fa(D1r、D1f)であってよい。
Fa(D1r、D1f)=(1-D1r)+(D1f)
【0059】
S260では、プロセッサ210は、第1損失が小さくなるように、予め決められたアルゴリズムに従って、第1識別部410の複数の演算パラメータを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ210は、いわゆるAdamの最適化を行ってよい。
【0060】
なお、第1損失関数は、第1実出力データ419rが「実(1)」に近いほど大きい値を算出し、第1偽出力データ419fが「偽(ゼロ)」に近いほど大きい値を算出するような関数であってよい。例えば、第1損失関数は、以下の関数Fb(D1r、D1f)であってよい。
Fb(D1r、D1f)=log(D1r)+log(1-D1f)
この場合、第1損失が大きいほど、第1識別部410の性能は良好である。プロセッサ210は、第1損失が大きくなるように、第1識別部410の複数の演算パラメータを調整する。なお、この場合、第1識別部410にとっては、第1損失は、小さくすべき損失ではなく、大きくすべき評価値である。
【0061】
S270では、プロセッサ210は、学習フォント画像データIp1dを第1生成部310に入力して、偽中間画像データIp2dを生成する。この処理は、S240の処理と同じである。
【0062】
S280では、プロセッサ210は、偽中間画像データIp2dを第1識別部410に入力し、第1偽出力データ419fを算出する。S280の処理は、S250の処理と同様である。ただし、S260で第1識別部410がトレーニングされているので、S280で算出される第1偽出力データ419fは、「偽(ゼロ)」により近い値になり得る。
【0063】
S290では、プロセッサ210は、第1偽出力データ419fを使用して、予め決められた第2損失関数に従って、第2損失を算出する。第2損失関数は、第1偽出力データ419fが「実(1)」に近いほど、小さい値を算出する種々の関数であってよい。例えば、第1偽出力データ419fをD1fとする場合に、第2損失関数は、以下の関数Fc(D1f)であってよい。
Fc(D1f)=(1-D1f)
【0064】
S290では、プロセッサ210は、第2損失が小さくなるように、予め決められたアルゴリズムに従って、第1生成部310の複数の演算パラメータを調整する。アルゴリズムとしては、例えば、誤差逆伝播法と勾配降下法とを使用したアルゴリズムが採用されてよい。また、プロセッサ210は、いわゆるAdamの最適化を行ってよい。また、本実施例では、プロセッサ210は、第1生成部310の複数の層のうちの予め決められた複数の層に、いわゆるドロップアウトを適用する。ドロップアウトは、第1生成部310の汎用性を向上できる。また、GANの生成部は、一般的には、データを生成するために、ノイズの入力値を使用する。ドロップアウトは、ノイズ付加と同様の効果を第1生成部310に付与し得る。従って、本実施例では、第1生成部310へのノイズの入力は、省略される。
【0065】
また、第2損失は、以下の関数Fd(D1f)であってよい。
Fd(D1f)=log(1-D1f)
この場合、第2損失が小さいほど、第1生成部310の性能は良好である。プロセッサ210は、第2損失が小さくなるように、第1生成部310の複数の演算パラメータを調整する。
【0066】
なお、第2損失関数は、偽中間画像データIp2dと実中間画像データIq2dとの間の差分を示す成分を含んでよい。差分は、例えば、いわゆるL1距離であってよい。L1距離は、例えば、2個の画像Iq2、Ip2の間の同じ画素位置での色値の差分の絶対値の和で表される。L1距離は、偽中間画像Ip2と実中間画像Iq2との間の文字の形状の差が大きいほど、大きくなる。S290では、プロセッサ210は、このような差分を示す成分を含む第2損失が小さくなるように、第1生成部310の複数の演算パラメータを調整してよい。
【0067】
以上の図5の処理によって、プロセッサ210は、第1ステージGAN501(すなわち、第1生成部310と第1識別部410)をトレーニングする。続く図6の処理では、プロセッサ210は、第2ステージGAN502(すなわち、第2生成部320と第2識別部420)をトレーニングする。以下に説明するように、第2生成部320のトレーニング方法は、第1生成部310のトレーニング方法と同様である。第2識別部420のトレーニング方法は、第1識別部410のトレーニング方法と同様である。
【0068】
S310(図6)では、プロセッサ210は、認識フォント画像データIq3dを第2識別部420に入力し、第2出力データ429を算出する。プロセッサ210は、第2識別部420の演算パラメータを使用して、第2識別部420の各層の演算を行うことによって、第2出力データ429を算出する。以下、認識フォント画像データIq3d(すなわち、実データ)から得られる第2出力データ429を、第2実出力データ429rとも呼ぶ。
【0069】
S320では、プロセッサ210は、学習フォント画像データIp1dを第1生成部310に入力して、偽中間画像データIp2dを生成する。S320の処理は、S240(図5)の処理と同様である。ただし、S290で第1生成部310がトレーニングされているので、S320で生成される偽中間画像データIp2dは、実中間画像データIq2dにより近い画像であり得る。
【0070】
S330では、プロセッサ210は、S320で生成された偽中間画像データIp2dを第2生成部320に入力して、出力画像データIp3dを生成する。具体的には、プロセッサ210は、第2生成部320の演算パラメータを使用して、第2生成部320の各層の演算を行うことによって、出力画像データIp3dを算出する。以下、出力画像データIp3dを、偽出力画像データIp3dとも呼び、出力画像Ip3を、偽出力画像Ip3とも呼ぶ。
【0071】
S340では、プロセッサ210は、偽出力画像データIp3dを第2識別部420に入力し、第2出力データ429を算出する。S340の処理は、認識フォント画像データIq3dに代えてS330で生成された偽出力画像データIp3dが使用される点を除いて、S310の処理と同じである。以下、偽出力画像データIp3dから得られる第2出力データ429を、第2偽出力データ429fとも呼ぶ。
【0072】
S350では、プロセッサ210は、第2実出力データ429rと第2偽出力データ429fとを使用して、予め決められた第3損失関数に従って、第3損失を算出する。第3損失関数は、第2実出力データ429rが「実(1)」に近いほど小さい値を算出し、第2偽出力データ429fが「偽(ゼロ)」に近いほど小さい値を算出するような、種々の関数であってよい。これに代えて、第3損失関数は、第2実出力データ429rが「実(1)」に近いほど大きい値を算出し、第2偽出力データ429fが「偽(ゼロ)」に近いほど大きい値を算出するような関数であってもよい。本実施例では、第3損失関数は、S260(図5)で使用される第1損失関数と同じである。
【0073】
S350では、プロセッサ210は、第3損失を使用して、予め決められたアルゴリズムに従って、第2識別部420の複数の演算パラメータを調整する。本実施例では、S350で使用されるアルゴリズムは、S260(図5)で使用されるアルゴリズムと同じである。これにより、第2識別部420は、実画像データと偽画像データとを適切に識別するように、トレーニングされる。
【0074】
S360では、プロセッサ210は、学習フォント画像データIp1dを第1生成部310に入力して、偽中間画像データIp2dを生成する。この処理は、S320の処理と同じである。
【0075】
S370では、プロセッサ210は、S360で生成された偽中間画像データIp2dを第2生成部320に入力して、偽出力画像データIp3dを生成する。この処理は、S330の処理と同じである。
【0076】
S380では、プロセッサ210は、S370で生成された偽出力画像データIp3dを、第2識別部420に入力し、第2偽出力データ429fを算出する。S380の処理は、S340の処理と同様である。ただし、S350で第2識別部420がトレーニングされているので、S380で算出される第2偽出力データ429fは、「偽(ゼロ)」により近い値であり得る。
【0077】
S390では、プロセッサ210は、第2偽出力データ429fを使用して、予め決められた第4損失関数に従って、第4損失を算出する。第4損失関数は、S290(図5)で使用された第2損失関数と同じである。すなわち、第2偽出力データ429fが「実(1)」に近いほど、第4損失は小さい。さらに、プロセッサ210は、第4損失が小さくなるように、予め決められたアルゴリズムに従って、第2生成部320の複数の演算パラメータを調整する。本実施例では、S390で使用されるアルゴリズムは、S290で使用されるアルゴリズムと同じである。
【0078】
S393では、プロセッサ210は、トレーニング終了条件が満たされるか否かを判断する。トレーニング終了条件は、機械学習モデル500が適切にトレーニングされたことを示す任意の条件であってよい。本実施例では、トレーニング終了条件は、作業者からの終了指示が入力されることである。プロセッサ210は、学習データ237(図1)中のトレーニングに使用されていない文字画像データの複数のペアから、フォントリストのフォントと文字リストの文字との全ての組み合わせに関して、文字画像データの複数のペアを取得する。プロセッサ210は、取得した複数のペアのそれぞれの学習フォントの文字画像データを生成モデル510に入力し、生成モデル510から複数の出力画像データを取得する。プロセッサ210は、入力された学習フォントの入力画像と出力された出力画像との複数のペアを、表示部240に表示する。作業者は、表示部240を観察して、出力画像が入力画像の文字と同じ文字を認識フォントで適切に表しているか否かを確認する。作業者は、確認結果に応じて、操作部250を操作して、トレーニングの終了指示、または、継続指示を入力する。
【0079】
トレーニングが終了していないと判断される場合(S393:No)、プロセッサ210は、図5のS215へ移行し、新たな注目ペアの処理を実行する。トレーニングが終了したと判断される場合(S393:Yes)、S397で、プロセッサ210は、トレーニング済の生成モデル510を、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、図5図6の処理を終了する。トレーニングされた生成モデル510は、フォントリスト中のそれぞれのフォントを、認識フォントに変換できる。例えば、生成モデル510は、ラベルフォントの文字の画像データから、認識フォントの同じ文字の画像データを生成する。また、生成モデル510は、認識フォントの文字の画像データから、同じ認識フォントの同じ文字の画像データを生成する。なお、トレーニングが終了した場合、プロセッサ210は、識別モデル520を、不揮発性記憶装置230から削除してよい。
【0080】
A5.検査処理:
図7は、検査処理の例を示すフローチャートである。プロセッサ210(図1)は、第3プログラム233に従って、図7の処理を実行する。本実施例では、プロセッサ210は、検査処理を実行することによって、プリンタのラベルシートの文字列の適否を検査する。なお、検査処理の対象は、ラベルシートLBに加えて、他の種類のラベルシートも含んでいる。
【0081】
S410では、作業者は、ラベルシート(例えば、ラベルシートLB(図1))がデジタルカメラ100の撮影範囲内に位置するように、プリンタ(例えば、プリンタDV)を配置する。そして、作業者は、操作部250を操作して、検査処理の開始指示を入力する。プロセッサ210は、開始指示に応じて、デジタルカメラ100に撮影指示を供給する。デジタルカメラ100は、ラベルシートを撮影し、ラベルシートの撮影画像を表す撮影画像データを生成する。プロセッサ210は、デジタルカメラ100から、撮影画像データを取得する。本実施例では、撮影画像データは、グレースケールのビットマップデータである。
【0082】
図8(A)-(G)は、検査処理で処理される画像の例を示す説明図である。図8(A)は、ラベルシートの撮影画像の例を示している。撮影画像Ixは、文字列TXとグラフィックGとを含むラベルシートLBを表している。
【0083】
S420(図7)では、プロセッサ210は、文字認識処理を実行する。図9は、文字認識処理の例を示すフローチャートである。S510では、プロセッサ210は、撮影画像データを分析して、撮影画像中の文字の領域を検出する。図8(B)は、撮影画像Ixから検出される文字の領域の例を示している。図示するように、文字列TXを構成する8個の文字の8個の文字領域TA1-TA8が検出されている。文字領域TA1-TA8は、1個の文字を、それぞれ含んでいる。本実施例ではプロセッサ210は、文字毎に文字領域を検出する。抽出される文字領域の形状は、生成モデル510によって受け入れられる画像の形状と同じである(ただし、画素密度は異なり得る)。以下、検出された文字領域の数が、N個(Nは1以上の整数)であることとする(図8(B)の例では、N=8)。文字領域が適切に検出される場合、Nは、ラベルシートに含まれる文字数と同じである。
【0084】
文字領域の検出方法は、任意の方法であってよい。本実施例では、プロセッサ210は、予め準備された複数の文字のそれぞれの画像データを使用するパターンマッチングによって、文字領域を検出する。これに代えて、プロセッサ210は、機械学習モデルを使用して文字領域を検出してよい。例えば、プレプリント「Youngmin Baek, Bado Lee, Dongyoon Han, Sangdoo Yun, Hwalsuk Lee, "Character Region Awareness for Text Detection", arXiv:1904.01941, https://arxiv.org/abs/1904.01941」に開示されている方法が、採用されてよい。なお、S510では、プロセッサ210は、各文字領域の文字認識を、行わない。
【0085】
S520(図9)では、プロセッサ210は、N個の文字領域から1個の注目文字領域を選択し、注目文字領域の撮影画像を表す入力画像データを生成する。そして、プロセッサ210は、トレーニング済の生成モデル510(図2)に入力画像データを入力することによって、出力画像データを生成する。プロセッサ210は、撮影画像データのうちの注目文字領域に対応する部分を使用して、入力画像データを生成する。入力画像データを生成する処理は、入力画像の高さと幅とを、生成モデル510によって受け入れられる画像の高さと幅とに変換するための解像度変換処理を含んでいる。
【0086】
図8(C)は、入力画像と出力画像の例を示している。ここで、第1文字領域TA1(図8(B))が、注目文字領域であることとする。入力画像データT1dの入力画像T1は、注目文字領域の撮影画像を表している。注目文字領域は、注目文字領域に対応付けられた文字である注目文字(ここでは、第1文字領域TA1の「E」の文字)の領域である。入力画像T1のフォントは、ラベルフォントである。出力画像データT1xdの出力画像T1xは、入力画像T1の文字と同じ注目文字を認識フォントで表している。
【0087】
S530(図9)では、プロセッサ210は、入力画像データと出力画像データとを使用して、入力画像データのフォントが認識フォントであるか否かを判断する。この判断の方法は、種々の方法であってよい。本実施例では、プロセッサ210は、入力画像と出力画像との間の同じ画素位置での色値の差分の絶対値を算出する。そして、プロセッサ210は、複数の画素位置のそれぞれの差分の絶対値の和を算出する。この和が予め決められたフォント閾値以下である場合に、プロセッサ210は、入力画像データのフォントが認識フォントであると判断する。上記の和がフォント閾値よりも大きい場合、プロセッサ210は、入力画像データのフォントが認識フォントではないと判断する。図8(C)の例では、入力画像データT1dと出力画像データT1xdが、判断に使用される。入力画像T1と出力画像T1xとの間でフォントが異なるので、入力画像データT1dのフォントが認識フォントではないと判断される。
【0088】
入力画像データのフォントが認識フォントではないと判断される場合(S540:No)、S550で、プロセッサ210は、N個の文字から注目文字を除いた残りのN-1個の文字のそれぞれについて、生成モデル510を使用するフォント変換を行う。フォント変換の処理は、S520の処理と同じである。プロセッサ210は、N-1個の文字のそれぞれに関して、文字領域の撮影画像を表す入力画像データを生成し、トレーニング済の生成モデル510(図2)に入力画像データを入力することによって、出力画像データを生成する。
【0089】
図8(D)は、N-1個の文字のそれぞれの入力画像と出力画像の例を示している。入力画像データT2d-T8dの入力画像T2-T8は、それぞれ、文字領域TA2-TA8(図8(B))の撮影画像である。これらの画像T2―T8の文字のフォントは、ラベルフォントである。出力画像データT2xd-T8xdの出力画像T2x-T8xは、入力画像T2-T8の文字と同じ文字を認識フォントで表している。
【0090】
S560(図9)では、プロセッサ210は、N個の文字のN個の出力画像データのそれぞれの文字認識処理を実行することによって、N個の文字を認識する。図8(A)-図8(D)の例では、プロセッサ210は、出力画像データT1xd-T8xdの文字認識処理により、8個の文字で構成される文字列「EXAMPLE1」を認識する。文字認識処理は、OCR(Optical Character Recognition)とも呼ばれる公知の種々の処理であってよい。文字認識処理は、例えば、認識フォントで表された複数の文字のそれぞれの画像データを使用するパターンマッチングを使用する処理であってよい。また、文字認識処理は、線分、閉じたループ、線の方向、線の交差などの特徴を検出し、検出された特徴を使用して文字を認識する処理であってよい。また、文字認識処理は、機械学習モデルによって文字を認識する処理であってよい。いずれの場合も、文字認識の精度は、フォントに応じて異なり得る。すなわち、認識フォントとは異なるフォントの文字の認識精度は、認識フォントの文字の認識精度と比べて、低くなり得る。本実施例では、S520、S550で、プロセッサ210は、元のフォントを認識フォントに変換する。従って、S560では、プロセッサ210は、高い精度で、文字を認識できる。
【0091】
S560の終了に応じて、プロセッサ210は、図9の処理、すなわち、図7のS420の処理を、終了する。
【0092】
本実施例では、ラベルシートLB(図8(A))とは異なる他の種類のラベルシートの検査も行われる。この場合、図9のS540の判断結果がYesであり得る。図8(E)は、他の種類のラベルシートの撮影画像の例を示している。撮影画像Ixbは、文字列TXbとグラフィックGbとを含むラベルシートLBbを表している。文字列TXbは、8個の文字「ABCDEFGH」で構成されている。これらの文字は、認識フォントで表されている。以下、図8(A)のラベルシートLBを、第1ラベルシートLBと呼び、図8(E)のラベルシートLBbを、第2ラベルシートLBbと呼ぶ。なお、文字の総数は、複数のラベルシートの間で、異なってよい。
【0093】
図8(F)は、図9のS510で撮影画像Ixbから検出される文字の領域の例を示している。プロセッサ210は、文字列TXbを構成する8個の文字の8個の文字領域TB1-TB8を、検出する。S520では、プロセッサ210は、1個の文字領域(例えば、第1文字領域TB1)を、注目文字領域として選択し、注目文字領域の撮影画像を表す入力画像データを生成する。プロセッサ210は、生成モデル510(図2)に入力画像データを入力することによって、出力画像データを生成する。
【0094】
図8(G)は、入力画像と出力画像の例を示している。入力画像データT1bdの入力画像T1bは、注目文字領域の撮影画像を表している。注目文字領域は、注目文字領域に対応付けられた注目文字(ここでは、第1文字領域TB1の「A」の文字)の領域である。入力画像T1bのフォントは、認識フォントである。出力画像データT1bxdの出力画像T1bxは、入力画像T1bの文字と同じ文字を認識フォントで表している。このように、生成モデル510は、認識フォントの文字の画像T1bから、同じ認識フォントの同じ文字の画像T1bxを生成する。入力画像T1bのフォントが出力画像T1bxのフォントと同じ認識フォントであるので、図9のS540では、プロセッサ210は、入力画像データのフォントが認識フォントであると判断する。
【0095】
通常は、ラベルシートの複数の文字は、同じフォントで表される。従って、1個の文字のフォントが認識フォントである場合、他の文字のフォントも認識フォントであると推定される。本実施例では、図9のS540の判断結果がYesである場合、S570で、プロセッサ210は、ラベルシートの撮影画像データの文字認識処理を実行することによって、ラベルシートに含まれる各文字を認識する。この文字認識の方法は、S560の文字認識の方法と同じである。図8(E)の例では、プロセッサ210は、「ABCDEFGH」の8個の文字で構成される文字列を認識する。S570の終了に応じて、プロセッサ210は、図9の処理、すなわち、図7のS420の処理を、終了する。
【0096】
S430では、プロセッサ210は、S420で認識された文字が、ラベルシートに予め対応付けられた正しい文字と同じであるか否かを判断する。プロセッサ210は、認識された文字が正しい文字と一致する場合に、認識された文字が正しいと判断する(本実施例では、認識された文字列と正しい文字列との一致が判断される)。2個の文字列の間に違いがある場合、プロセッサ210は、認識された文字が正しくないと判断する。
【0097】
認識された文字が正しいと判断される場合(S430:Yes)、プロセッサ210は、S440で検査結果を「合格(すなわち、良品)」に設定し、S460へ移行する。認識された文字が正しくないと判断される場合(S430:No)、プロセッサ210は、S450で検査結果を「不合格(すなわち、不良品)」に設定し、S460へ移行する。S460では、プロセッサ210は、検査結果を示す結果データを記憶装置215(例えば、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、図7の処理を終了する。結果データは、種々の処理に利用され得る。例えば、プロセッサ210は、結果データによって示される検査結果を表示部240に表示してよい。作業者は、表示部240を観察して、検査結果を知ることができる。検査結果が不合格である場合、作業者は、ラベルシートを貼り直す作業を行ってよい。
【0098】
以上のように、本実施例では、データ処理装置200は、図9の文字認識処理を実行する。具体的には、S510で、プロセッサ210は、対象物の例であるラベルシートの撮影画像のデータである撮影画像データを分析することによって、ラベルシートに含まれる文字である対象文字の領域を検出する。S520では、図8(C)で説明したように、プロセッサ210は、生成モデル510(図2)に、検出された対象文字の領域TA1の撮影画像の入力画像データT1dを入力することによって、認識フォントの対象文字の出力画像データT1xdを生成する。図5図6で説明したように、生成モデル510は、認識フォントとは異なる他のフォントの文字の画像データを使用して認識フォントの同じ文字の画像データを生成するようにトレーニングされている。S560では、プロセッサ210は、出力画像データT1xdの文字認識処理を実行することによって、対象文字を認識する。以上により、認識フォントとは異なるフォントの文字の文字認識処理の精度が、認識フォントの文字の文字認識処理の精度と比べて低い場合であっても、文字認識に対するフォントの影響を緩和できる。例えば、ラベルシートLB(図8(A))の文字列TXのラベルフォントの文字認識精度が低い場合であっても、S560では、プロセッサ210は、認識フォントの文字画像T1x(図8(C))の出力画像データT1xdの文字認識処理を行うので、プロセッサ210は、適切に、文字を認識できる。
【0099】
また、図8(A)に示すように、第1ラベルシートLBは、N個(Nは2以上の整数)の対象文字を含んでいる。第1ラベルシートLBのための処理が行われる場合、S510(図9)では、プロセッサ210は、N個の対象文字の領域TA1-TA8を検出する(図8(B))。S520では、プロセッサ210は、検出されたN個の対象文字のうちの1個の対象文字である注目文字の領域TA1の撮影画像T1(図8(C))の入力画像データT1dを生成モデル510に入力する。これにより、プロセッサ210は、注目文字を認識フォントで表す出力画像データT1xdを生成する。S530では、プロセッサ210は、注目文字の入力画像データT1dと注目文字の出力画像データT1xdとを使用して、入力画像データT1dの注目文字のフォントが認識フォントであるか否かを判断する。
【0100】
注目文字のフォントが認識フォントでないと判断される第1の場合(S540:No)、S550で、プロセッサ210は、注目文字以外のN-1個の対象文字のN-1個の領域TA2-TA8(図8(B))のN-1個の撮影画像T2-T8(図8(D))のN-1個の入力画像データT2d-T8dを生成する。そして、プロセッサ210は、N-1個の入力画像データT2d-T8dを生成モデル510に入力することによって、N-1個の対象文字をそれぞれ認識フォントで表すN-1個の出力画像データT2xd-T8xdを生成する。第1の場合(S540:No)、S560では、プロセッサ210は、N個の対象文字のN個の出力画像データT1xd-T8xdの文字認識処理を実行することによって、N個の対象文字を認識する。
【0101】
図8(E)に示すように、第2ラベルシートLBb(図8(E))は、N個(Nは2以上の整数)の対象文字を含んでいる。第2ラベルシートLBbのための処理が行われる場合、S510(図9)では、プロセッサ210は、N個の対象文字の領域TB1-TB8を検出する(図8(F))。S520では、プロセッサ210は、検出されたN個の対象文字のうちの1個の対象文字である注目文字の領域TB1の撮影画像T1b(図8(G))の入力画像データT1bdを生成モデル510に入力する。これにより、プロセッサ210は、注目文字を認識フォントで表す出力画像データT1bxdを生成する。S530では、プロセッサ210は、注目文字の入力画像データT1bdと注目文字の出力画像データT1bxdとを使用して、入力画像データT1bdの注目文字のフォントが認識フォントであるか否かを判断する。
【0102】
注目文字のフォントが認識フォントであると判断される第2の場合(S540:Yes)、S570で、プロセッサ210は、N個の対象文字の撮影画像の画像データ(本実施例では、ラベルシートの撮影画像データ)の文字認識処理を実行することによって、N個の対象文字を認識する。
【0103】
このように、注目文字のフォントが認識フォントであると判断される第2の場合に(S540:Yes)、プロセッサ210は、N個の対象文字の撮影画像の画像データの文字認識処理を実行することによって、N個の対象文字を認識する。従って、注目文字以外のN-1個の対象文字のN-1個の出力画像データのそれぞれの生成は、省略できる。この結果、処理のための時間が長くなることを、抑制できる。
【0104】
また、本実施例では、データ処理装置200は、図7の検査処理を実行する。S430では、プロセッサ210は、S420で認識されたN個の対象文字を使用して、ラベルシートの良否を判断する。上述したように、プロセッサ210は、S420で文字を適切に認識するので、プロセッサ210は、ラベルシートの良否を適切に判断できる。
【0105】
また、本実施例では、データ処理装置200は、図3の学習データ生成処理を実行する。生成される学習データ237は、認識フォントとは異なる他のフォントの文字の画像データを使用して認識フォントの同じ文字の画像データを生成するように生成モデル510をトレーニングするためのデータである。S120とS160との処理では、プロセッサ210は、文字を表す文書データを使用して、認識フォントと他のフォントとのいずれかである第1フォント(本実施例では、認識フォント)の文字を表す第1文字画像データを生成する(例えば、図4の文字画像Ia1のデータ)。S130では、プロセッサ210は、文書データを使用する文字画像データの生成に使用されるべき文字のフォントを、第1フォント(ここでは、認識フォント)から、認識フォントと他のフォントとのうちの第1フォントとは異なる第2フォント(本実施例では、他のフォント。例えば、ラベルフォント)に変更する。S140、S150、S160の処理では、プロセッサ210は、変更された第2フォントの文字を表す第2文字画像データを生成する(例えば、図4の文字画像Ib1のデータ)。S170の処理では、プロセッサ210は、第1フォントの文字を表す第1文字画像データと、第2フォントの同じ文字を表す第2文字画像データと、のペア(例えば、図4のペアP1)を含む学習データ237を記憶装置215(本実施例では、不揮発性記憶装置230)に格納する。図5図6で説明したように、このような学習データ237は、認識フォントとは異なる他のフォントの文字の画像データを使用して認識フォントの同じ文字の画像データを生成するように、生成モデル510を適切にトレーニングできる。
【0106】
また、S150では、プロセッサ210は、第2画像データのぼかし処理を実行する。すなわち、ぼけた画像データを使用して、生成モデル510のトレーニングが行われる。従って、生成モデル510は、ぼけた撮影画像データが入力される場合であっても、適切な出力画像データを生成できる。また、S150では、ノイズ付加処理が行われる。従って、生成モデル510は、ノイズを有する撮影画像データが入力される場合であっても、適切な出力画像データを生成できる。また、S150では、微小回転処理が行われる。従って、生成モデル510は、入力される画像が回転したラベルを表す場合であっても、適切な出力画像データを生成できる。
【0107】
なお、ラベルシートによって示され得る文字を含むキャラクタセットは、ラベルシートに応じて異なり得る。図4の文書画像DCbを示すラベルシートLBは、ラテンアルファベットとアラビア数字とを示し得る。図示を省略するが、他のラベルシートは、日本語の平仮名を示してよい。図3のS185、S190で使用される文字リストは、ラベルシートによって示され得る文字を含むキャラクタセットの複数の文字を含むことが好ましい。プロセッサ210は、ラベルシート毎に予め決められた文字リストを使用してよい。
【0108】
また、文字認識処理に適する認識フォントは、文字に応じて異なり得る。例えば、ラテンアルファベットとアラビア数字とに関しては、サンセリフが好ましく、日本語の平仮名に関しては、明朝体が好ましい場合がある。図3のS110で使用される認識フォントは、文字毎に予め決められたフォントであってよい。プロセッサ210は、文書データによって示される文字列に含まれる文字に対応付けられた認識フォントを使用してよい。プロセッサ210は、このような生成処理によって、文字画像データの種々のペアを生成し得る。例えば、ラテンアルファベットとアラビア数字とに関しては、種々の学習フォントと、認識フォントであるサンセリフと、を対応付ける文字画像データのペアが生成され得る。日本語の平仮名に関しては、種々の学習フォントと、認識フォントである明朝体と、を対応付ける文字画像データのペアが生成され得る。このような複数のペアを含む学習データ237がトレーニング処理(図6図7)で使用される場合、トレーニング済の生成モデル510は、文字に適するフォント変換を実行できる。例えば、生成モデル510は、ラテンアルファベットとアラビア数字とに関しては、種々のフォントを認識フォントであるサンセリフに変換し、日本語の平仮名に関しては、種々のフォントを認識フォントである明朝体に変換できる。
【0109】
なお、1個のラベルシートが、第1認識フォントに対応付けられた第1文字と、第1認識フォントと異なる第2認識フォントに対応付けられた第2文字と、を示し得る。この場合、図3の学習データの生成処理で、プロセッサ210は、第1認識フォントに対応付けられた文字のみに関する処理S110-S180と、第2認識フォントに対応付けられた文字のみに関する処理S110-S180とを、別々に実行することが好ましい。また、プロセッサ210は、1個のラベルシートのための図9のS520、S550の処理において、第1文字を第1認識フォントで表す出力画像データと、第2文字を第2認識フォントで表す出力画像データと、を生成し得る。
【0110】
B.変形例:
(1)文字認識処理は、図9の処理に代えて、他の種々の処理であってよい。S560で実行される出力画像データの文字認識処理は、出力画像データに種々の前処理(例えば、シャープネス強調処理、ノイズ除去処理など)を実行して処理済出力画像データを生成する処理と、処理済出力画像データから文字を認識する処理と、を含んでよい。同様に、S570で実行される撮影画像データの文字認識処理は、撮影画像データに種々の前処理を実行して処理済撮影画像データを生成する処理と、処理済撮影画像データから文字を認識する処理と、を含んでよい。
【0111】
S530、S540、S570は、省略されてよい。すなわち、入力画像データのフォントが認識フォントであるか否かに拘らず、プロセッサ210は、S520、S550の処理を実行してN個の出力画像データを生成し、S560でN個の出力画像データのそれぞれの文字認識処理を実行してよい。
【0112】
(2)図9のS530において、入力画像データのフォントが認識フォントであるか否かの判断の方法は、上記実施例の方法に代えて、入力画像データと出力画像データとを使用する種々の方法であってよい。例えば、プロセッサ210は、入力画像と出力画像との間の同じ画素位置での色値の差分の絶対値を算出する。そして、プロセッサ210は、所定の差分閾値よりも大きい差分の絶対値を有する画素位置の総数を算出する。このような画素位置の総数が所定の画素閾値以下である場合に、プロセッサ210は、入力画像データのフォントが認識フォントであると判断してよい。このように、プロセッサ210は、入力画像と出力画像との間の差の評価値が閾値以下である場合に、入力画像データのフォントが認識フォントであると判断し、差の評価値が閾値より大きい場合に、フォントが認識フォントではないと判断してよい。差の評価値は、上記実施例の「複数の画素位置のそれぞれの色値の差分の絶対値の和」と、上記変形例の「差分閾値よりも大きい差分の絶対値を有する画素位置の総数」と、に限らず、入力画像と出力画像との間の差を示す種々の値であってよい。
【0113】
また、図9の実施例では、全ての文字のフォント変換を行うか否かの判断に使用される注目文字の総数は「1」である。これに限らず、プロセッサ210は、N個の文字のうちM個(Mは、1以上、N未満の整数)の注目文字を使用して、残りのN-M個の文字のフォント変換を行うか否かを判断してよい。この場合、図9の文字認識処理は、以下のように修正されてよい。S520では、プロセッサ210は、S510で検出された文字領域の数Nを使用して、1以上、N未満の数Mを決定する(Mの決定方法は、任意。例えば、Mは、Nから1以上の所定数を減算した残りと、1と、のうちの大きい方)。プロセッサ210は、N個の文字領域からM個の注目文字領域を選択し、M個の注目文字領域のM個の撮影画像を表すM個の入力画像データを生成する。そして、プロセッサ210は、トレーニング済の生成モデル510(図2)にM個の入力画像データを入力することによって、M個の注目文字をそれぞれ注目文字に対応付けられた認識フォントで表すM個の出力画像データを生成する。S530では、プロセッサ210は、M個の入力画像データとM個の出力画像データとを使用して、M個の入力画像データのM個の注目文字のフォントがそれぞれ注目文字に対応付けられた認識フォントであるか否かを判断する。ここで、プロセッサ210は、入力画像データと出力画像データとのM個のペアのそれぞれに関して、上述した判断を行う。すなわち、判断は、1文字ずつ行われる。そして、M個の注目文字のうち1以上の注目文字のそれぞれのフォントが注目文字に対応付けられた認識フォントでないと判断される第1の場合(S540:No)、S550で、プロセッサ210は、M個の注目文字以外のN-M個の対象文字のN-M個の領域のN-M個の撮影画像のN-M個の入力画像データを生成モデル510に入力することによって、N-M個の対象文字をそれぞれ対象文字に対応付けられた認識フォントで表すN-M個の出力画像データを生成する。そして、プロセッサ210は、S560で、N個の文字を認識する。M個の注目文字のフォントがそれぞれ注目文字に対応付けられた認識フォントであると判断される第2の場合(S540:Yes)、プロセッサ210は、S570で、N個の文字を認識する。この変形例では、ラベルシートに含まれるN個の文字が認識フォントとは異なるフォントの文字を含む場合に、Mが大きいほど、S570が実行される可能性(すなわち、S570の文字認識処理による文字の誤認識の可能性)が小さくなる。
【0114】
(3)学習データ生成処理は、図3の処理に代えて、他の種々の処理であってよい。例えば、S130、S140は、S110、S120よりも先に実行されてよい。また、S160では、プロセッサ210は、第1画像データと加工済の第2画像データとを分析して、画像中の文字の領域を検出してよい。検出方法は、図9のS510の検出方法と同じであってよい
【0115】
S150で、ぼかし処理と、ノイズ付加処理と、微小回転処理と、の3個の処理のうちの1以上の処理が、省略されてよい。プロセッサ210は、3個の処理のうちの実行すべき処理を、S150が実行される毎にランダムに決定してよい。また、S150は、省略されてよい。
【0116】
学習データ237の生成に使用される「フォントリスト」は、認識フォントとは異なる1以上のフォントを含むことが好ましい。これにより、学習データ237は、認識フォントとは異なるフォントを認識フォントに変換するように、生成モデル510をトレーニングできる。また、「フォントリスト」は、対象物の文字の実際のフォント(例えば、ラベルフォント)を含むことが好ましい。これにより、学習データ237は、実際のフォントを適切に認識フォントに変換するように、生成モデル510をトレーニングできる。ただし、実際のフォントは、省略されてよい。また、「フォントリスト」は、対象物の文字のフォントとしては使用されないフォントを含んでよい。これにより、学習データ237は、生成モデル510の汎用性を向上できる。ただし、対象物の文字のフォントとしては使用されないフォントは、省略されてよい。
【0117】
学習データの生成に使用される文書データのデータ形式は、ベクタデータの形式に代えて、文字コードを含む種々の形式であってよい。例えば、文書データは、属性データを含まずに文字コードを含むテキスト形式のデータであってよい。この場合、プロセッサ210は、S110、S130で、レンダリング用のフォントを設定すればよい。
【0118】
学習データ237の生成に使用される「文字リスト」は、種々の文字で構成されてよい。例えば、文字リストは、ラベルシートによって示され得る文字を含むキャラクタセットの複数の文字のうちの一部の複数の文字で構成されてよい。いずれの場合も、文字リストは、正しい文字列の複数の文字を含むことが好ましい。また、文字リストは、エラーに起因してラベルシートによって示され得る全ての文字を含むことが好ましい。
【0119】
(4)生成モデルのトレーニング処理は、図5図6の処理に代えて、他の種々の処理であってよい。例えば、トレーニング終了条件は、S210-S390が、所定回数、実行されることであってよい。演算パラメータを調整する処理(S260、S290、S350、S390)は、ミニパッチ確率的勾配降下法を使用する処理であってよい。
【0120】
(5)生成モデルの構成は、図2の生成モデル510の構成に代えて、他の種々の構成であってよい。例えば、中間画像Ip2の高さと幅は、入力画像Ip1の高さと幅よりもそれぞれ小さくてよい(例えば、64*64)。生成モデルは、カラー(例えば、赤R、緑G、青B)のビットマップデータを処理してよい。第1生成部310には、入力画像データに加えて、乱数を使用して生成されたノイズが入力されてよい。エンコーダ312、322は、ダウンサンプリングを行う処理層(例えば、プーリング層)を有してよい。デコーダ318、328は、アップサンプリングを行う処理層(例えば、ニアレストネイバーによる処理層)を有してよい。生成部310、320は、U-Netを使用して構成されてよい。識別部410、420は、Patch GANを使用して構成されてよい。
【0121】
また、生成モデルは、積み重ねられた3以上のGANを含んでよい。複数のGANが徐々に画像を変化させる場合、1個のGANが画像を生成する場合と比べて、生成された画像は文字の細かい形状を表現できる。ただし、生成モデルは、1個のGANで構成されてよい。
【0122】
また、生成モデルは、ConditionalGANを含んでよい。条件を示すデータとして、文字領域の撮影画像のデータが使用されてよい。また、生成モデルは、オートエンコーダ、複数の全結合層で構成されたモデル、など、種々の予測モデルであってよい。いずれの場合も、生成モデルのトレーニング方法は、生成モデルに適した任意の方法であってよい。ここで、上述した学習データに含まれる文字画像データのペアを使用して、以下のように生成モデルをトレーニングすることが好ましい。すなわち、ペアに含まれる認識フォントとは異なるフォントの文字画像データが生成モデルに入力される場合に、生成モデルから出力される文字画像データが、同じペアに含まれる認識フォントの文字画像データに近づくように、生成モデルをトレーニングすることが好ましい。
【0123】
(6)文字認識処理の対象である対象物は、プリンタなどの製品に貼られるラベルシートに限らず、製品に直接的に印刷されるラベルであってよい。対象物は、ラベルに限らず、製品に取り付けられる札でもよい。対象物は、製品を収容する容器、または、製品を包む包装紙であってよい。対象物に関連する製品は、プリンタに限らず、ミシン、カッティングマシンなどの任意の製品であってよい。一般的に、対象物は、文字を表す任意の対象物であってよい。対象物によって表される文字の数は、1以上の任意の整数であってよい。
【0124】
(7)学習データ生成処理(例えば、図3)、トレーニング処理(例えば、図5図6)、検査処理(例えば、図7)は、互いに異なるデータ処理装置によって実行されてよい。また、文字認識処理(例えば、図9)は、検査処理を実行するデータ処理装置とは異なる別のデータ処理装置によって実行されてよい。いずれのデータ処理装置も、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、文字認識処理の機能を一部ずつ分担して、全体として、文字認識処理の機能を提供してもよい(これらの装置を備えるシステムがデータ処理装置に対応する)。
【0125】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図9の文字領域検出(S510)の機能を、専用のハードウェア回路によって実現してもよい。
【0126】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【0127】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【0128】
100…デジタルカメラ、200…データ処理装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…第1プログラム、232…第2プログラム、233…第3プログラム、237…学習データ、240…表示部、250…操作部、270…通信インタフェース、310…第1生成部、312…第1エンコーダ、315…第1特徴データ、318…第1デコーダ、320…第2生成部、322…第2エンコーダ、325…第2特徴データ、328…第2デコーダ、410…第1識別部、419…第1出力データ、419f…第1偽出力データ、419r…第1実出力データ、420…第2識別部、429…第2出力データ、429f…第2偽出力データ、429r…第2実出力データ、500…機械学習モデル、510…生成モデル、520…識別モデル
図1
図2
図3
図4
図5
図6
図7
図8
図9