public ElementProperties(Orientation orientation, TextLineOrder textLineOrder, WritingDirection writingDirection, float deskewAngle) { this.orientation = orientation; this.textLineOrder = textLineOrder; this.writingDirection = writingDirection; this.deskewAngle = deskewAngle; }
/// <summary> /// 中心座標を設定する /// </summary> private void SetCenterPosition() { WritingDirection direction = WritingDirection.Horizontal; Vector2DF size = Font.CalcTextureSize(Text, direction).To2DF(); CenterPosition = size * CenteringPosition; }
/// <summary> /// 各要素の設定を行う /// </summary> /// <returns>C#による各要素の設定</returns> public override string ToCSharp() => $"new UIText({(Mode)}, {CSharpCodeProvider.FromString(Name)})\n" + "{\n" + $" IsClickable = {CSharpCodeProvider.FromBoolean(IsClickable)},\n" + $" Color = {CSharpCodeProvider.FromColor(Color)},\n" + $" Position = {CSharpCodeProvider.FromVector2DF(Position)},\n" + $" CenterPosition = {CSharpCodeProvider.FromVector2DF(CenterPosition)},\n" + $" Scale = {CSharpCodeProvider.FromVector2DF(UIObject.Scale)},\n" + $" DrawingPriority = {DrawingPriority},\n" + $" WritingDirection = WritingDirection.{WritingDirection.ToString()},\n" + $" Text = {CSharpCodeProvider.FromString(Text)},\n" + $" Font = {CSharpCodeProvider.FromFont(FontInfo)}\n" + "}";
public void PageIteratorOrientation(IntPtr handle, out Orientation orientation, out WritingDirection writingDirection, out TextLineOrder textLineOrder, out float deskew_angle ) { int intOrientation = 0; int intWritingDirection; int intTextLineOrder; UnsafeTesseractPrimitives.PageIteratorOrientation(handle, out intOrientation, out intWritingDirection, out intTextLineOrder, out deskew_angle); orientation = (Orientation)intOrientation; writingDirection = (WritingDirection)intWritingDirection; textLineOrder = (TextLineOrder)intTextLineOrder; }
public static extern void GetPageOrientation(IntPtr pageIteratorHandle, out Orientation orientation, out WritingDirection direction, out TextlineOrder order, out float skew);
private void button6_Click_1(object sender, EventArgs e) { //opcija za iteriranje rec po rec consoleTab2.Clear(); string putanja = @"../../../tessdata"; string imageDir = @"../../../staticimages/Arial10.PNG"; try { using (var engine = new TesseractEngine(putanja, "eng", EngineMode.Default)) { using (var img = Pix.LoadFromFile(imageDir)) { using (var page = engine.Process(img)) { var text = page.GetText(); consoleTab2.Text += "Mean confidence: " + String.Format("{0:P}", page.GetMeanConfidence()) + Environment.NewLine; consoleTab2.Text += "Text (GetText): \r\n{0}" + text + Environment.NewLine; consoleTab2.Text += "Text (iterator):" + Environment.NewLine; using (var iter = page.GetIterator()) { iter.Begin(); do { do { do { do { if (iter.IsAtBeginningOf(PageIteratorLevel.Block)) { consoleTab2.Text += "<BLOCK>" + Environment.NewLine; } consoleTab2.Text += iter.GetText(PageIteratorLevel.Word); consoleTab2.Text += " " + Environment.NewLine; var prop = iter.GetProperties(); float ugao = prop.DeskewAngle; WritingDirection dir = prop.WritingDirection; Tesseract.Orientation orieant = prop.Orientation; consoleTab2.Text += ugao + " " + dir + " " + orieant + Environment.NewLine; if (iter.IsAtFinalOf(PageIteratorLevel.TextLine, PageIteratorLevel.Word)) { consoleTab2.Text += Environment.NewLine; } } while (iter.Next(PageIteratorLevel.TextLine, PageIteratorLevel.Word)); if (iter.IsAtFinalOf(PageIteratorLevel.Para, PageIteratorLevel.TextLine)) { consoleTab2.Text += Environment.NewLine; } } while (iter.Next(PageIteratorLevel.Para, PageIteratorLevel.TextLine)); } while (iter.Next(PageIteratorLevel.Block, PageIteratorLevel.Para)); } while (iter.Next(PageIteratorLevel.Block)); } } } } } catch (Exception ex) { Trace.TraceError(ex.ToString()); Console.WriteLine("Unexpected Error: " + ex.Message); Console.WriteLine("Details: "); Console.WriteLine(ex.ToString()); } }
/// <summary> /// 通常の描画に加えて文字列を描画する。 /// </summary> /// <param name="pos">描画位置</param> /// <param name="color">頂点色</param> /// <param name="font">フォント</param> /// <param name="text">文字列</param> /// <param name="writingDirection">行方向</param> /// <param name="alphaBlend">アルファブレンドの種類</param> /// <param name="priority">描画の優先順位(大きいほど前面に描画される)</param> /// <remarks> /// OnDrawAdditionallyの中以外では実行してはいけない。 /// </remarks> protected void DrawTextAdditionally(Vector2DF pos, Color color, Font font, string text, WritingDirection writingDirection, AlphaBlendMode alphaBlend, int priority) { Layer.DrawTextAdditionally(pos, color, font, text, writingDirection, alphaBlend, priority); }
public static extern void PageIteratorOrientation(IntPtr handle, out Orientation orientation, out WritingDirection writing_direction, out TextLineOrder textLineOrder, out float deskew_angle);
/// <summary> /// C#のコードを返す /// </summary> /// <returns>この追加描画を実装するC#のコード</returns> public override string ToCSharp() => $"DrawTextAdditionally({CSharpCodeProvider.FromVector2DF(Position)}, {CSharpCodeProvider.FromColor(Color)}, {CSharpCodeProvider.FromFont(FontInfo)}, {Text}, WritingDirection.{WritingDirection.ToString()}, AlphaBlendMode.{AlphaBlend.ToString()}, {DrawingPriority}); // {Name}";
/// <summary> /// Returns orientation for the block the iterator points to. /// </summary> /// <param name="orientation">The block orientation.</param> /// <param name="writingDirection">The block writing direction.</param> /// <param name="textLineOrder">The block text order.</param> /// <param name="deskewAngle">The block deskew angle, in radians, counter-clockwise.</param> public void GetOrientation(out Orientation orientation, out WritingDirection writingDirection, out TextLineOrder textLineOrder, out float deskewAngle) { NativeMethods.TessPageIteratorOrientation(this, out orientation, out writingDirection, out textLineOrder, out deskewAngle); }
/// <summary> /// 通常の描画に加えて文字列を描画する。 /// </summary> /// <param name="pos">描画位置</param> /// <param name="color">頂点色</param> /// <param name="font">フォント</param> /// <param name="text">文字列</param> /// <param name="writingDirection">行方向</param> /// <param name="alphaBlend">アルファブレンドの種類</param> /// <param name="priority">描画の優先順位(大きいほど前面に描画される)</param> /// <remarks> /// OnDrawAdditionallyの中以外では実行してはいけない。 /// </remarks> public void DrawTextAdditionally(Vector2DF pos, Color color, Font font, string text, WritingDirection writingDirection, AlphaBlendMode alphaBlend, int priority) { if (coreLayer2D == null) return; coreLayer2D.DrawTextAdditionally(pos, color, IG.GetFont(font), text, (swig.WritingDirection)writingDirection, (swig.AlphaBlendMode)alphaBlend, priority); }
public void Orientation(out Orientation orientation, out WritingDirection direction, out TextlineOrder textLineOrder, out float deskewAngle) { Native.DllImports.TessPageIteratorOrientation(handleRef, out orientation, out direction, out textLineOrder, out deskewAngle); }
internal static extern void TessPageIteratorGetOrientation(IntPtr iterator, ref PageOrientation orientation, ref WritingDirection writingDirection, ref TextlineOrder order, ref float deskewAngle);
public static extern void TessPageIteratorOrientation( PageIterator handle, out Orientation orientation, out WritingDirection writingDirection, out TextLineOrder textLineOrder, out float deskewAngle);
/// <summary> /// 通常の描画に加えて文字列を描画する。 /// </summary> /// <param name="pos">描画位置</param> /// <param name="color">頂点色</param> /// <param name="font">フォント</param> /// <param name="text">文字列</param> /// <param name="writingDirection">行方向</param> /// <param name="alphaBlend">アルファブレンドの種類</param> /// <param name="priority">描画の優先順位(大きいほど前面に描画される)</param> /// <remarks> /// OnDrawAdditionallyの中以外では実行してはいけない。 /// </remarks> public void DrawTextAdditionally(Vector2DF pos, Color color, Font font, string text, WritingDirection writingDirection, AlphaBlendMode alphaBlend, int priority) { if (coreLayer2D == null) { return; } coreLayer2D.DrawTextAdditionally(pos, color, IG.GetFont(font), text, (swig.WritingDirection)writingDirection, (swig.AlphaBlendMode)alphaBlend, priority); }
internal static extern void TessPageIteratorOrientation(HandleRef handle, out Orientation orientation, out WritingDirection writing_direction, out TextlineOrder textline_order, out float deskew_angle);
/// <summary> /// 描画テキストと描画方向を与えると、その文字の描画領域を返す。 /// </summary> /// <param name="text">描画テキスト </param> /// <param name="writingDirection">描画方向 </param> /// <returns>文字の描画領域 </returns> public asd.Vector2DI CalcTextureSize(string text, WritingDirection writingDirection) { return CoreInstance.CalcTextureSize(text, (asd.swig.WritingDirection)writingDirection); }