asp.net core에서 서비스 만들었기 때문에 선전 겸 기술 공개 -2_7. 분할 처리 Google Vision API-

선반 이미지를 분할하는 방법 (Qiita 설명 용)



Qiita에서 이것을 전부 설명한 곳에서 필요도 없기 때문에, 긁어 뽑고의 설명이 됩니다!
1. 책의 문자 부분을 마우스로 선택
2.Enter로 책 이미지 보내기
-여기에서 비동기-
3. 이미지 분할
4.OCR 처리
5. 취득한 문자를 본 검색
- 여기까지 비동기 -
6. 화면에 결과 표시

이번은 「4.OCR 처리」입니다.
그리고 기다리지 않는 Google Vision API의 차례입니다.

참고 사이트



참고로 한 것은 완전히이 사이트입니다.

C#에서 Google Cloud Vision API를 사용하여 간단한 OCR 애플리케이션 만들기
htps : // 이 m / 냐가와 _00 / ms / 4, 764260, c76, 8504 cf4

부족 부분은, 공식 사이트의 메뉴얼을 의지해 실장했습니다.
인증에서 샘플까지.
h tps : // c ぉ d. 오, ぇ. 코 m / 드 cs / 맞아 ㅇ 치카 치온 / p 로즈 c 치 온? hl = 그럼

플러그인 준비



플러그인 'Google.Apis.Vision.v1'을 설치합니다.



환경 변수 설정



이 엔은 대략 설명이 되기 때문에, 넘어진 사람은 코멘트에서도 받을 수 있으면 별도 설명합시다.

1. 공식 매뉴얼대로, GoogleVisionAPI로 취득한 인증 키 파일명을 환경 변수에 세트 합니다.
환경 변수는 파일 이름을 지정합니다. (아마)


2. 인증 키 파일을 프로젝트 바로 아래에 놓습니다.


3. 인증 키 파일의 내용
당연히 보이지 않습니다! 하지만, 어떤 느낌인지만. . .


만약을 위해, 이 후 이 json 파일을 재작성했습니다.

Git에서 샘플 얻기



참고 사이트 그대로를 유용하고 있습니다.
takashi-miyahara/SimpleOCRApp_for_GoogleCloudVisionAPI:
htps : // 기주 b. 코 m / 타카시 미야하라 / 시 mp ぇ 오 C p p fu r _ Go g C p_후오r_오오gぇCぉうゔぃ시오나피/하고 xt에서 c와 r. cs

이 클래스를 조금 바꿔서 Models/GoogleVision 폴더에 배치합니다.


WorkController에 구현



나머지는 간단합니다.
잘라낸 부분을 OCR에 걸어 봅시다.
취득한 캐릭터 라인을, 화면상의 Popup 표시합니다. (쉽기 때문에.)

Controllers\WorkController.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Drawing;
using Amazon;
using Amazon.S3;
using Amazon.S3.Transfer;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

using sample2_1.Models;
using sample2_1.Models.Const;
using sample2_1.Models.Interface;
using sample2_1.Models.GoogleVision;

namespace sample2_1.Controllers
{
    public class WorkController : Controller
    {
        // AmazonS3 インターフェイス
        private static IAmazonS3 client;

        public IActionResult Index()
        {
            --            }
        }

        [HttpPost("UploadFiles")]
        public async Task<IActionResult> FileUpload(List<IFormFile> files)
        {
            --
        }

        // S3 ストレージへアップロード!
        static async Task WritingAnObjectAsync(string s_upd_file_nm)
        {
            --
        }

        //asp.net coreでサービス作ったから宣伝兼ねて技術公開する -2_6.分割画面→Canvasオブジェクト- 追加
        public IActionResult Canvas()
        {
            --
        }


        [HttpPost]
        //FormからJsonを受け取り、クラス変換してくれます。
        public string Cut([FromBody]CutData cutData)
        {
            // 1.Imageへ画面に表示している画像ファイルを読み込み
            System.Drawing.Image image = null;
            try
            {
                image = System.Drawing.Image.FromFile(@"C:\work\work.jpg");
            }
            catch (Exception e)
            {
                throw e;
            }

            // 2.Bitmapに範囲指定したサイズを設定
            Bitmap destbmp = new Bitmap((int)cutData.width, (int)cutData.height);
            // 3.Graphicsに読み込ませるBitmapを設定
            Graphics graphics = Graphics.FromImage(destbmp);
            // 4.[1]でロードした画像を描画
            graphics.DrawImage(image, (cutData.x * -1) , (cutData.y * -1), image.Size.Width, image.Size.Height);
            // 5.保存先の指定
            var stream = new FileStream(@"C:\work\cutter.jpg", FileMode.Create);
            // 6.保存処理
            destbmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            // 7.後処理
            stream.Close();

            // 8.Google Vision API 認証準備
            GCPVisonAPI ocr = new GCPVisonAPI();
            // 9.戻り値stringの変数作成、画像をByteArrayで開く
            string getText = "";
            byte[] imageArray = System.IO.File.ReadAllBytes(@"C:\work\cutter.jpg");
            // 10.Google Vision APIの実行
            ocr.getTextAndRoi(imageArray, ref getText);

            // 受けとった文字列を返却
            return getText;

            // 受け取ったheightプロパティを画面に返す。
            //return @"正常にCut出来ました!";
        }
    }
}

디버그 실행



그럼 시도해 보자!

1회째:
목표는 "최신 일본의 지진지도"



결과


「최신 일본의 지진지도」

「최신 일본 지진지도」
좋아요.
작은 「의」는 색도 다르기 때문에 인식하고 있지 않습니다만. . .

2회째:
목적은, 2권 동시 「실천!비즈니스 수학 Lite」 「생명과 환경의 화학」



결과


"생명과 환경의 화학""실천! 비즈니스 수학 Lite"

"생명과 환경의 화학""실천! 비즈니스 수학""
굉장히 꽤 정밀합니다.
Lite가 "괄호 닫기"로 인식되지만 허용 범위.

이것만으로 약간의 서비스가 될 것 같은 생각이 들었습니다.
TanaToru에 메뉴 추가하여 선택 이미지의 OCR 서비스를 만들어도 재미있을지도.

Google Vision API 반환 값 정보



반환값에는 다양한 정보가 담겨져 있습니다.
자세한 내용을 보려면 Git에서 얻은 샘플 .Execute() 때 서버와 통신합니다.



responses.Responses를 워치로 보면 여러가지 볼 수 있습니다.

검색할 수 있는 모든 텍스트:
FullTextAnnotation.Text

획득할 수 있는 모든 텍스트의 좌표 정보:
TextAnnotations[0].BoundingPoly.Vertices[0~3]



검색할 수 있는 단어 텍스트:
TextAnnotations[1~x].Description

검색할 수 있는 단어 텍스트의 좌표 정보:
TextAnnotations[1~x].BoundingPoly.Vertices[0~3]



기본적으로는, 문자의 취득 정도 밖에 하지 않겠지만, 문자의 좌표를 사용해 무엇인가 하고 싶은 경우, 사용할 수 있을지도.
TanaToru에서도 사용할 예정입니다.

【부디 시험해 주세요】※완전 무료입니다
TanaToru -책장 관리 서비스-
htps : // 어 p. 제로-오네-sys m. 이. jp/타나토루/

좋은 웹페이지 즐겨찾기