我在使用带有Xamarin.Forms的Microsoft Oxford Vision收据中的文本识别时遇到问题。
这是一个代码:
private async void BtnTake_Clicked(object sender, EventArgs e)
{
try
{
var photo = await TakePic();
Image = ImageSource.FromStream(() => photo.GetStream());
var result = client.RecognizeTextAsync(photo.GetStream()).Result;
var words = from r in result.Regions
from l in r.Lines
from w in l.Words
select w.Text;
OutputText = string.Join(" ", words.ToArray());
await Navigation.PushAsync(new TextFromPhoto(OutputText, Image));
}
catch (Exception ex)
{
OutputText = "Ops! Something wrong!" + ex.ToString();
await Navigation.PushAsync(new TextFromPhoto(OutputText, Image));
}
}
private async Task<MediaFile> TakePic()
{
var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
SaveToAlbum = true,
PhotoSize = PhotoSize.Medium
});
return file;
}
代码可以完美地处理普通文本,例如书本照片页,这是我在应用程序中使用的,但是当我尝试使用它来扫描收据程序中的文本时,在输出上,我们可以看到“ 513nlkm nlmnl l1mk 531”或类似的内容。
当我有“普通”文字时的照片:
有收据文字的照片:
是否有解决此问题的行之有效的方法?