LEADTOOLS OCR(Leadtools.Forms.Ocrアセンブリ)

フレームを表示

OcrXmlOutputOptions列挙体








IOcrDocument.SaveXml。から取得したXMLデータの形式を制御します。
構文
'Declaration
 
<FlagsAttribute()>
<SerializableAttribute()>
Public Enum OcrXmlOutputOptions 
   Inherits System.Enum
   Implements System.IComparable, System.IConvertible, System.IFormattable 
'Usage
 
Dim instance As OcrXmlOutputOptions
typedef NS_OPTIONS(NSUInteger, LTOcrXmlOutputOptions)
public enum OcrXmlOutputOptions
Leadtools.Forms.Ocr.OcrXmlOutputOptions = function() { };
Leadtools.Forms.Ocr.OcrXmlOutputOptions.prototype = {<br/>
  None = 0x00000000,
	Characters = 0x00000001,
	CharacterAttributes = 0x00000002,
	
 };
メンバ
メンバ説明
0 x 00000000None デフォルトです。結果XMLデータで認められたワード値を書き込みます。
0 x 00000001Characters 結果XMLデータでワード値の代わりに認められた文字値を書き込みます
0 x 00000002CharacterAttributes 文字による妥当だけ。結果XMLデータでキャラクタ属性(フォントたとえば)を書き込みます。
解説

いろいろなIOcrDocument.SaveXmlメソッドは、出力XMLデータの形式を制御するために、OcrXmlOutputOptions列挙体メンバの一つ以上の組合せを受け取ります。

結果XMLデータの形式は、以下の通りです:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <pages> <page> <zone> <paragraph> <line> <word> <character/> <character/> </word> </line> </paragraph> </zone> </page> </pages>

pages要素は1ドキュメントにつき1回繰り返されます、そして、それは値と追加の属性を持っていません。

page要素は、ドキュメント(IOcrDocument.Pages.Count)におけるあらゆるページのために繰り返されます。このページが認められなかったか、ゾーンpageを格納しないならば、要素は任意の子zone要素を格納しません。

page要素は値を持っていなくて、以下の追加の属性を格納します:

属性
horizontal_resolution ページの水平解像度。値は、IOcrPage.DpiXです。
vertical_resolution ページの垂直解像度。値は、IOcrPage.DpiYです。
width ページ読込みピクセルの幅。値は、IOcrPage.Widthです。
height ページ読込みピクセルの高さ。値は、IOcrPage.Heightです。

zone要素は、現在のページ(IOcrPage.Zones)で、ゾーンごとに繰り返されます。zone要素は値を持っていなくて、以下の追加の属性を格納します:

属性
type ゾーン型。「テキスト」か「グラフィクス」。ゾーン要素が型「テキスト」であるならば、それは0以上paragraph子要素を格納します。ゾーンが型「グラフィクス」、そしてそれであるならば、封じ込めと他の子要素はそうしません。
left ゾーンの左位置。ピクセル単位。値は、ピクセルに変換されるOcrZone.Bounds.Leftです。
top ゾーンの上の位置。ピクセル単位。値は、ピクセルに変換されるOcrZone.Bounds.Topです。
right ゾーンの右の位置。ピクセル単位。値は、ピクセルに変換されるOcrZone.Bounds.Rightです。
bottom ゾーンの下の位置。ピクセル単位。値は、ピクセルに変換されるOcrZone.Bounds.Bottomです。
subtype ゾーン型。値は、OcrZone.ZoneTypeです。

paragraph要素は現在のゾーンでテキストパラグラフごとに繰り返されます、そして、それは属性を持っていません。このゾーンが認識テキストparagraphを持っていないならば、要素は任意の子line要素を格納しません。

paragraph要素は、属性と値を持っていません。

line要素は、現在のパラグラフでテキスト行ごとに繰り返されます。line要素は値を持っていなくて、以下の追加の属性を格納します:

属性
left 行の左位置。ピクセル単位。
top 行の上の位置。ピクセル単位。
right 行の右の位置。ピクセル単位。
bottom 行の下の位置。ピクセル単位。値lefttoprightそして、bottomこの行を整えるワードのすべての境界の要約から計算されます。
base この行のベースラインの位置。値は、この行を構成するすべてのワードのベースラインの合計から計算されます。

word要素は、現在の行でテキストのワードごとに繰り返されます。OcrXmlOutputOptions.Charactersが世代オプションで指定されていないならば;そしてword、要素はその値としてワードの値を格納します。さもなければ、word要素は値を格納しません。

word要素は、以下の属性を持っています:

属性
left ワードの左位置。ピクセル単位。
top ワードの上の位置。ピクセル単位。
right ワードの右の位置。ピクセル単位。
bottom ワードの下の位置。ピクセル単位。値lefttoprightそして、bottomこのワードを整える文字のすべての境界の要約から計算されます。
base このワードのベースラインの位置。値は、このワードを構成するすべての文字のベースラインの合計から計算されます。

characterOcrXmlOutputOptions.Charactersが世代オプションで指定される場合だけ、要素は以下のワードで文字ごとに繰り返されます。さもなければ、word要素は子character要素を格納しません。OcrXmlOutputOptions.Charactersが世代オプションで指定されているならば;そしてcharacter、要素はその値として文字の値を格納します。さもなければ、character要素は値を格納しません。

character要素は、以下の追加の属性を格納します:

属性
left 文字の左位置。ピクセル単位。
top 文字の上の位置。ピクセル単位。
right 文字の右の位置。ピクセル単位。
bottom 文字の下の位置。ピクセル単位。値lefttoprightそして、bottomOcrCharacter.Boundsから計算されます。
base この文字のベースラインの位置。値は、OcrCharacter.Baseです。
confidence この文字の信頼。値は、OcrCharacter.Confidenceです。
font_size ポイントのフォントサイズ。値は、OcrCharacter.FontSizeです。OcrXmlOutputOptions.CharacterAttributesが指定される場合のみ利用可能。
proportional 「はい」、文字フォントがプロポーショナルであるならば、「反対」;そうでない場合。値は、OcrCharacter.FontStyleから計算されます。OcrXmlOutputOptions.CharacterAttributesが指定される場合のみ利用可能。
serif 「はい」、文字フォントがセリフであるならば、「反対」;そうでない場合。値は、OcrCharacter.FontStyleから計算されます。OcrXmlOutputOptions.CharacterAttributesが指定される場合のみ利用可能。
bold 「はい」、文字フォントが太字であるならば、「反対」;そうでない場合。値は、OcrCharacter.FontStyleから計算されます。OcrXmlOutputOptions.CharacterAttributesが指定される場合のみ利用可能。
italic 「はい」、文字フォントがイタリックであるならば、「反対」;そうでない場合。値は、OcrCharacter.FontStyleから計算されます。OcrXmlOutputOptions.CharacterAttributesが指定される場合のみ利用可能。
underline 「はい」、文字フォントがアンダーラインであるならば、「反対」;そうでない場合。値は、OcrCharacter.FontStyleから計算されます。OcrXmlOutputOptions.CharacterAttributesが指定される場合のみ利用可能。

OcrXmlOutputOptions.Noneが指定されるとき、以下はXML出力のサンプルです:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <pages> <page horizontal_resolution="300" vertical_resolution="300" width="2544" height="3294"> <zone type="Text" left="371" top="370" right="831" bottom="420" subtype="Text" recognition_module="Auto" fill_method="Default"> <paragraph> <line left="372" top="371" right="830" bottom="419" base="29"> <word left="372" top="371" right="554" bottom="409" base="30">License</word> <word left="570" top="372" right="830" bottom="419" base="29">Agreement</word> </line> </paragraph> </zone> </page> </pages>

ここにOcrXmlOutputOptions.Charactersが指定される同じXML出力がある。

<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <pages> <page horizontal_resolution="300" vertical_resolution="300" width="2544" height="3294"> <zone type="Text" left="371" top="370" right="831" bottom="420" subtype="Text" recognition_module="Auto" fill_method="Default"> <paragraph> <line left="372" top="371" right="830" bottom="419" base="29"> <word left="372" top="371" right="554" bottom="409" base="30"> <character left="372" top="372" right="398" bottom="408" base="36" confidence="100">L</character> <character left="402" top="371" right="409" bottom="408" base="37" confidence="100">i</character> <character left="414" top="381" right="438" bottom="409" base="27" confidence="100">c</character> <character left="442" top="381" right="468" bottom="409" base="27" confidence="100">e</character> <character left="472" top="381" right="496" bottom="408" base="27" confidence="100">n</character> <character left="501" top="381" right="525" bottom="408" base="27" confidence="100">s</character> <character left="529" top="381" right="554" bottom="408" base="27" confidence="100">e</character> </word> <word left="570" top="372" right="830" bottom="419" base="29"> <character left="570" top="372" right="604" bottom="408" base="36" confidence="100">A</character> <character left="607" top="381" right="633" bottom="419" base="27" confidence="100">g</character> <character left="639" top="381" right="655" bottom="408" base="27" confidence="100">r</character> <character left="657" top="381" right="682" bottom="408" base="27" confidence="100">e</character> <character left="685" top="381" right="710" bottom="408" base="27" confidence="100">e</character> <character left="715" top="381" right="753" bottom="408" base="27" confidence="100">m</character> <character left="758" top="381" right="783" bottom="408" base="27" confidence="100">e</character> <character left="788" top="381" right="812" bottom="408" base="27" confidence="100">n</character> <character left="815" top="374" right="830" bottom="408" base="34" confidence="100">t</character> </word> </line> </paragraph> </zone> </page> </pages>

各々の文字のフォントファミリー名を得るために、IOcrDocumentManager.GetFontNamesとともにOcrXmlOutputOptions.CharacterAttributesオプションを使うことができます。OCRを実行するとき、エンジンはArialとCalibriなどの類似したフォントを識別することができません、代わりに、エンジンは文字がセリフを持っているかどうか、そして、フォントがプロポーショナルであるか固定かどうか情報を取得します。

GetFontNamesによると、戻り値は以下のようにフォントの配列です:

インデックス 説明
0 プロポーショナルセリフ文字で使用するフォント。
1 プロポーショナルサンセリフ体文字で使用するフォント。
2 等幅セリフ文字で使用するフォント。
3 等幅サンセリフ体文字で使用するフォント。
4 ICR(手書きの)文字で使用するフォント。
5 MICR(チェックフォント)文字で使用するフォント。

ここで必要となるのは最初の4つの値だけです。先に述べたように、CharacterAttributesオプションを使うことは、XMLで各々の文字の要素に、以下の属性を追加します:「プロポーショナル、セリフ、太字の、イタリック語派の」。GetFontNamesから得られるこの情報とフォント名で、フォントファミリー名を簡単に終わることができます。以下のコードスニペットは、これを達成します:


             private static void ShowFontNames(IOcrDocumentManager ocrDocumentManager, string xmlFileName)
             {
                // Get the Latin font names
                string[] fontNames = ocrDocumentManager.GetFontNames("en");
            
                // Note, you can also use a fixed array for most cases. The font names are not changed by the OCR engines
                // unless changed manually by the user:
                /*
                string[] fontNames =
                {
                   "Times New Roman",   // Proportional Serif
                   "Arial",             // Proportional Sans-Serif
                   "Courier New",       // Monospace Serif
                   "Arial"              // Monospace Sans-Serif
                };
                */
            
                // Read the XML file
                XPathDocument xmlDoc = new XPathDocument(xmlFileName);
                XPathNavigator nav = xmlDoc.CreateNavigator();
                XPathNodeIterator charactersIter = nav.Select(@"//character");
                while(charactersIter.MoveNext())
                {
                   XPathNavigator characterNav = charactersIter.Current;
            
                   // Read its attributes
                   bool isSerif;
                   bool isProportional;
            
                   if(string.Compare(characterNav.GetAttribute("serif", characterNav.NamespaceURI), "yes", StringComparison.InvariantCultureIgnoreCase) == 0)
                      isSerif = true;
                   else
                      isSerif = false;
            
                   if(string.Compare(characterNav.GetAttribute("proportional", characterNav.NamespaceURI), "yes", StringComparison.InvariantCultureIgnoreCase) == 0)
                      isProportional = true;
                   else
                      isProportional = false;
            
                   // Now find the font based on this info
                   int index;
            
                   if(isProportional && isSerif)
                      index = 0;
                   else if(isProportional && !isSerif)
                      index = 1;
                   else if(!isProportional && isSerif)
                      index = 2;
                   else
                      index = 3;
            
                   string fontName = fontNames[index];
                   Console.WriteLine("Character: {0} font: {1}", characterNav.Value, fontName);
                }
             }
             
サンプル
サンプルのために、言及しますIOcrDocument.SaveXml(string fileName, OcrXmlOutputOptions options)、そしてIOcrDocument.SaveXml(OcrXmlOutputOptions options)
継承階層

System.Object
   System.ValueType
      System.Enum
         Leadtools.Forms.Ocr.OcrXmlOutputOptions

必要条件

ターゲットプラットホーム

参照

参照

Leadtools.Forms.Ocr名前空間
Leadtools.Forms.DocumentWriters.DocumentFormat
IOcrDocumentManagerインターフェース
IOcrDocumentインターフェース
IOcrDocument.Save
IOcrDocument.SaveXml
IOcrPage.Recognize
IOcrEngineインターフェース
OcrEngineManagerクラス
OcrEngineType列挙体
LEADTOOLS .NET OCRによるプログラミング
アプリケーションに含まれるファイル

Leadtools.Forms.Ocrは、認識またはDocument Imaging Suiteのライセンスと、解除キーが必要です。詳細は、以下を参照してください。LEADTOOLSツールキット機能