Nishisansi Ответов: 1

Как отобразить вывод файла. cs в текстовом поле формы WPF?


У меня есть файл. cs, который отображает выходные данные полей passport MRZ в качестве выходных данных. Я создал форму WPF с текстовыми полями. Теперь я хочу показать этот вывод в текстовых полях формы WPF.
Как это сделать?

Что я уже пробовал:

Паспорт.В CS
using Google.Cloud.Vision.V1;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;

namespace WpfAppFormApp
{
    class PassportOcr
    {

        static string abc;
        public void passport()
        {
            PassportDetailPage pdp = new PassportDetailPage();
          
           
            Console.WriteLine("----------------------------------PASSPORT----------------------------------------");
           
            string credential_path = @"C:\Users\GIS-001\Downloads\SproutOCR-73c5a7843fb9.json";
            System.Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", credential_path);

            var client = ImageAnnotatorClient.Create();

            var image = Image.FromFile("C:/Users/GIS-001/source/repos/visionapi/visionapi/image/pandimani.jpg");

            var response = client.DetectDocumentText(image);


           

            string xyz = response.Text;

            xyz = xyz.Replace(" ", "");

            string pattern = ".*<<.*";
            Regex r = new Regex(pattern);

            foreach (Match m in r.Matches(xyz))
            {
                abc += m.Value;



            }

            //Console.WriteLine(abc);

            //    Console.WriteLine(word);

            string mrz = abc;
            string mrzLines = mrz.Replace("<", " ");
            mrzLines = mrzLines.Trim();

            Console.WriteLine("Document Type: " + mrzLines.Substring(0, 1).ToString()); // P=Passport
                                                                                        //Console.WriteLine("Type: " + mrzLines.Substring(1, 1).ToString());
            Console.WriteLine("Document Country: " + mrzLines.Substring(2, 3).ToString());
            Console.WriteLine("Document Owner: " + mrzLines.Substring(5, 39).ToString());
           
            Console.WriteLine("Document Number: " + mrzLines.Substring(44, 8).ToString());
            //Console.WriteLine("Check Digit: " + mrzLines.Substring(54, 1).ToString());
            Console.WriteLine("Nationality: " + mrzLines.Substring(54, 3).ToString());
            Console.WriteLine("Date of birth: " + mrzLines.Substring(57, 6).ToString());
            //Console.WriteLine("Date of birth Check: " + mrzLines.Substring(63, 1).ToString());
            Console.WriteLine("Sex: " + mrzLines.Substring(64, 1).ToString());
            Console.WriteLine("Document Expiry Date: " + mrzLines.Substring(65, 6).ToString());
            //Console.WriteLine("Document Expiry Date Check: " + mrzLines.Substring(71, 1).ToString());
            //Console.WriteLine("Personal Number: " + mrzLines.Substring(72, 14).ToString());
            //Console.WriteLine("Personal Number Check: " + mrzLines.Substring(86, 1).ToString());
            //Console.WriteLine("Complete Check: " + mrzLines.Substring(87, 1).ToString());










            Console.ReadLine();


        }

Паспорт.язык XAML
В этом файле у меня есть кнопка scan, когда я нажму эту кнопку, она вызовет Passport.CS-файл и вывод вывода в текстовом поле Passportresult.xaml.

1 Ответов

Рейтинг:
0

Graeme_Grant

Ваш код немного неясен.

Вам нужно поместить текстовые поля в форму/окно, дать каждому имя, а затем выбрать метод передачи или привязки данных к каждому текстовому полю.

Я буду предполагать, что вы делаете это в коде формы / окна:

1. PassportOcr объекта

public class PassportOcr 
{
    public PassportOcr(string mrzLines)
    {
        Country = mrzLines.Substring(2, 3);
        Owner = mrzLines.Substring(5, 39);
        Number = mrzLines.Substring(44, 8);
    }

    public string Country { get; set; }
    public string Owner { get; set; }
    public string Number { get; set; }
}

Окно с выделенным кодом:
public partial class MainWindow : Window
{
    public PassportOcr Ocr { get; set; }

    public SetOcrData(string mrzLines)
    {
        Ocr = new PassportOcr(mrzLines);

        // Show the user the data
        txtCountry.Text = Ocr.Country;
        txtOwner.Text = Ocr.Owner;
        txtNumber.Text = Ocr.Number;
    }
}

И XAML:
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Textbox x:Name="txtCountry" />
    <Textbox x:Name="txtOwner" Grid.Row=1 />
    <Textbox x:Name="txtNumber" Grid.Row=2 />
</Grid>


Nishisansi

Сэр, я обновил свой вопрос. Надеюсь, теперь вы поймете мой вопрос.

Graeme_Grant

метод передачи данных в текстовое поле WPF по-прежнему остается прежним. Все, что я вам дал, - это пример того, как это сделать. Теперь это зависит от вас, чтобы реализовать.

Nishisansi

общественные PassportOcr распознавания текста { получить; набор; }
Эта строка показывает ошибку " несогласованная доступность : тип свойства PassportOcr менее доступен.

Graeme_Grant

Ошибка компиляции точно говорит вам, в чем ваша проблема: вы не установили класс PassportOcr к public как и в приведенном выше примере.

Если вы копируете код, пожалуйста, скопируйте его правильно.