主要内容

このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。

ocr

光学式文字認識を使用したテキストの認識

説明

文本= OCR(OCR)(I)は、入力イメージIからの光学式文字認識情報が含まれるocrTextオブジェクトを返します。このオブジェクトには、認識されたテキスト、テキストの位置、および認識の結果の信頼度を示すメトリクスが含まれます。

文本= OCR(OCR)(I,roi)1つつの形の领域内ののIにあるテキストを認識します。roim个个个の关心领域ののののの列列のが含まれますます

[___] = OCR(OCR(___,姓名,Value)は,ののいずれかを使用使用,,,つつつつの姓名,Value引数ペアで指定されたオプションを追加で使用します。

すべて折りたたむ

businessCard = imread('businessCard.png');ocrResults = ocr(businessCard)
ocrresults =带有属性的ocrText:text:''MathWorks®...'targunboundingBoxes:[103x4 double] farneconConfidences:[103x1单个单个]单词:{16x1 cell} WordBoundingBoxes:[16x4 double] word Conconfidences:[16x1单身]
recognizedText = ocrResults.Text; figure; imshow(businessCard); text(600, 150, recognizedText,'背景颜色', [1 1 1]);

イメージを読み取ります。

i = imread('handicapSign.jpg');

I 内にある 1 つ以上の四角形の関心領域を定義します。

ROI = [360 118 384 560];

次のように、IMRECT を使用して、マウスで領域を選択することもできます。figure; imshow(I); roi = round(getPosition(imrect))

ocrresults = ocr(i,roi);

元のへ认识さたテキストの插入

iocr = insertText(i,roi(1:2),ocrresults.text,'AnchorPoint',...'RightTop','字体大小',16); figure; imshow(Iocr);

businessCard = imread('businessCard.png');ocrResults = ocr(businessCard)
ocrresults =带有属性的ocrText:text:''MathWorks®...'targunboundingBoxes:[103x4 double] farneconConfidences:[103x1单个单个]单词:{16x1 cell} WordBoundingBoxes:[16x4 double] word Conconfidences:[16x1单身]
Iocr = insertObjectAnnotation(businessCard,'rectangle',...ocrResults.WordBoundingBoxes,...ocrresults.wordconfidences);数字;imshow(iocr);

businessCard = imread('businessCard.png');Ocrresults = OCR(BusinessCard);bboxes = locateText(ocrresults,'MathWorks',“IgnoreCase”, true); Iocr = insertShape(businessCard,'FilledRectangle', bboxes); figure; imshow(Iocr);

入力引数

すべて折りたたむ

入力イメージ。M x N x 3 のトゥルーカラー、M 行 N 列の 2 次元グレースケール、またはバイナリ形式で指定します。入力イメージは、実数で非スパースの値でなければなりません。関数は、認識プロセスの前に、トゥルーカラー入力イメージまたはグレースケール入力イメージをバイナリ イメージに変換します。変換には Otsu しきい値手法が使用されます。OCR で最適な結果を得るには、入力イメージの小文字 ‘x’ または同等の文字の高さを 20 ピクセルより大きくしなければなりません。横軸または縦軸から +/- 10 度より大きなテキストの回転を除去して、認識の結果を改善します。

データ::单身的|双倍的|INT16|UINT8|UINT16|logical

1つ以上形の。。。。。。。列の要素要素指定指定します。。。。。。。。。。。。。。个个个个个个个のののの各行ははは,,,,,入力入力入力入力イメージイメージ内内内の关心领域领域领域领域领域领域をををををををををををををををををををををををををををををををををををををををををををををををををををを[x y]と位置と,四角关心サイズ[宽度高]ををピクセルで指定します。。各各各四角形I内に完全に含まれていなければなりません。認識プロセスの前に、関数は Otsu しきい値手法を使用して、トゥルーカラー入力関心領域およびグレースケール入力関心領域をバイナリ領域に変換します。関数は、四角形の領域で認識されたテキストをオブジェクトの配列として返します。

名前とのペアの引数

オプションの引数姓名,Valueのコンマ区切りペアを指定します。姓名は引数名で、Valueは対応する値です。姓名は引用でなければなりませ。。NAME1,Value1,...,Namen,Valuenのように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例:ocr(I,'TextLayout','Block')

入力テキストのレイアウト。'textlayout'と次かでされるコンマ切りのとして指定します。

textlayout テキストの处理
'汽车' 入力イメージのブロックレイアウトと読み取り顺序决定します。
'Block' イメージ内のををつのブロックとして处理し。。
'Line' イメージ内のをを行のとして处理し。。
'Word' イメージ内をシングルのテキストとしてし。。。
'特点' イメージ内のテキストを 1 つの文字として処理します。

レイアウト解析する,ドキュメントに二二组みなどなどの形式形式ががが含ま含まれるれる场合もも,,スキャンスキャンししたドキュメントからテキストテキストををををますますこのこのこのこのこのこのこの设定设定设定设定にれるのが少ないまたは要素の多いシーンにテキストある场合场合はは,,,,良い良い结果が得られられないないことことこと。。。。。。。。。。を试し要素多いシーンにテキストが场合に,别别のレイアウトレイアウトををを试す试す试す试すほかほかほか,,,イメージイメージのののテキストテキストテキストテキストを

認識する言語。'Language' と文字ベクトル'English''Japanese'、または文字ベクトルの cell 配列で構成されるコンマ区切りのペアとして指定します。追加の言語のOCR言语データファイルインストールをインストール,カスタム言语追加したりすることもでき。复数复数复数のの言语言语言语言语を指定指定するとと,,选択选択しししたたすべてすべてすべてのの言语言语言语のののの认识可能可能がが可能にににに精度がし,ののにかかるがなる场合があり。。

OCR言语データファイルインストールパッケージに含まれる追加言語を指定するには、組み込みの言語と同じ方法で言語を表す文字ベクトルを使用します。パスを指定する必要はありません。

txt = ocr(img,'语言','finnish');

サポートパッケージのの言语言语のリスト

独自のカスタム言語を使用するには、学習済みのデータ ファイルへのパスを言語を表す文字ベクトルとして指定します。.训练有素の形式に名前付けなければませ,,,,'tessdata' という名前のフォルダーに含まれていなければなりません。次に例を示します。

txt = ocr (img,“语言”,“路径/ / tessdata/eng.traineddata');
复数の言语をベクトルのの配列配列として読み込むます。。。
txt = ocr(img,'语言',... {'路径/to/tessdata/eng.traineddata',...'path/to/to/tessdata/jpn.traineddata'});
保存フォルダーは、cell 配列で指定したすべてのファイルについて常に同じでなければなりません。前述の例では、cell 配列のすべての训练有素ファイルがフォルダー ‘路径/到/tessdata’ に含まれます。次のコードは 2 つの異なる保存フォルダーを指定しているため、機能しません。
文本= OCR(OCR)(img,'Language', ... {'path/one/tessdata/eng.traineddata',... 'path/two/tessdata/jpn.traineddata'});
言語ファイルによっては別の言語に依存している場合があります。たとえば、ヒンディー語の学習は英語に依存します。ヒンディー語を使用する場合は、ヒンディー語の训练有素ファイルとフォルダーに英语の训练有素ファイルもれいなけれなりません。ocrは、Tesseract-Or3.02またはOCR トレーナーを使用して作成された训练有素ファイルのみサポートします。

MATLAB®Coder™によって生成された配布先の場合: 生成された OCR 実行可能ファイルと言語データ ファイル フォルダーが同一場所に存在しなければなりません。tessdataフォルダーの名前をtessdataにしなければなりません。

  • 英語の場合:c:/path/tessdata/eng.traineddata

  • 日本語の場合:C:/path/tessdata/jpn.traineddata

  • カスタム データ ファイルの場合:c:/path/tessdata/customlang.traineddata

  • C:/path/ocr_app.exe

次からとの学习済みデータをコピーできます。

fullfile(matlabroot, 'toolbox','vision','visionutilities','tessdata');

文字のサブセット。'字符集'と文字构成れるコンマ区のとして指定し。既定の设定设定で,,字符集は空のベクトル''に設定されます。空のベクトルは、Languageプロパティによって指定された言語のすべての文字を検索するように関数を設定します。このプロパティを少数の既知の文字に設定することで、分類プロセスを制限できます。

関数ocrは、字符集から最も適したものを選択します。入力イメージ内の文字に関する推測から得られる知識を使用すると、テキスト認識の精度の向上に役立ちます。たとえば、字符集をすべての数字'0123456789'にする关数はそれぞれの文字数字のみマッチングせようととししますますます。。この场合场合数字でない文字文字がが误っ误ってて数字

出力引数

すべて折りたたむ

认识さたテキストと。。ocrTextオブジェクトとして返されます。このオブジェクトには、認識されたテキスト、入力イメージ内で認識されたテキストの位置、および結果の信頼度を示すメトリクスが含まれます。信頼度の値の範囲は [0 1] で、これはパーセント単位の確率を表します。M 行 4 列のroiを指定と,关数はocrTextオブジェクトのm行1列列としてとしてとしてocrTextを返します。

ocrで期待どおりの結果が得られない場合、以下のオプションを 1 つ以上試してみてください。

  • イメージ サイズを元のサイズの 2 ~ 4 倍大きくします。

  • イメージの间隔が狭すぎたり文字のエッジが邻のに接し接してているいるいる场合场合,モルフォロジーモルフォロジーを使用使用ししてて文字をを细くししますますます。でででで

  • 2値を,がでないためにが発生していないかかを。。。。graythreshおよび关数inimbinarizeを使用してイメージを 2 値化します。2 値化の結果で文字が見えない場合、ライティング条件が一様でない可能性があります。関数imtophatを使用トップを适用か一様明るさを取り除くその他のの手法ををみみみ

  • 関心領域roiオプションを使用してテキストを分離します。roiの指定は手動で行うか、テキスト検出を使用することもできます。

  • イメージがたではなく,路上,を含む自然なシーンシーンのの,,,,,,入力入力textlayoutプロパティを'Block'または'Word'に设定こともでき。。

参照

[1] R. Smith。Tesseract OCR引擎的概述,第九届国际文档分析与认可会议论文集(ICDAR 2007)第2卷(2007年),第629-633页。

[2] Smith,R。,D。Antonova和D. Lee。调整Tesseract开源OCR发动机,用于多语言OCR。国际多语言OCR研讨会论文集(2009年)。

[3] R. Smith. Hybrid Page Layout Analysis via Tab-Stop Detection. Proceedings of the 10th international conference on document analysis and recognition. 2009.

拡张机能

R2014Aで导入