| package examples |
|
|
| import ( |
| "github.com/getcharzp/go-ocr/ddddocr" |
| "github.com/up-zero/gotool/imageutil" |
| "golang.org/x/image/draw" |
| "image" |
| "image/color" |
| "log" |
| "testing" |
| "time" |
| ) |
|
|
| func TestDdddOcr_Classification(t *testing.T) { |
| start := time.Now() |
| config := ddddocr.Config{ |
| OnnxRuntimeLibPath: "../lib/onnxruntime.dll", |
| ModelPath: "../ddddocr_weights/common.onnx", |
| DictPath: "../ddddocr_weights/dict.txt", |
| } |
|
|
| engine, err := ddddocr.NewEngine(config) |
| if err != nil { |
| log.Fatalf("创建 OCR 引擎失败: %v\n", err) |
| } |
| defer engine.Destroy() |
|
|
| imagePath := "./captcha.png" |
| img, err := imageutil.Open(imagePath) |
| if err != nil { |
| log.Fatalf("加载图像失败: %v\n", err) |
| } |
|
|
| |
| res, err := engine.Classification(img) |
| if err != nil { |
| log.Fatalf("运行检测失败: %v\n", err) |
| } |
| t.Logf("识别完成, 耗时:%v, 识别内容:%v\n", time.Since(start), res) |
| } |
|
|
| func TestDdddOcr_Detect(t *testing.T) { |
| start := time.Now() |
| config := ddddocr.Config{ |
| OnnxRuntimeLibPath: "../lib/onnxruntime.dll", |
| DetModelPath: "../ddddocr_weights/common_det.onnx", |
| } |
|
|
| engine, err := ddddocr.NewEngine(config) |
| if err != nil { |
| log.Fatalf("创建 OCR 引擎失败: %v\n", err) |
| } |
| defer engine.Destroy() |
|
|
| imagePath := "./captcha_det.png" |
| img, err := imageutil.Open(imagePath) |
| if err != nil { |
| log.Fatalf("加载图像失败: %v\n", err) |
| } |
|
|
| boxes, err := engine.Detect(img) |
| if err != nil { |
| log.Fatalf("运行检测失败: %v\n", err) |
| } |
| t.Logf("识别完成, 耗时:%v, 识别内容:%v\n", time.Since(start), boxes) |
|
|
| tagImg := image.NewRGBA(img.Bounds()) |
| draw.Draw(tagImg, img.Bounds(), img, image.Point{}, draw.Src) |
|
|
| for _, box := range boxes { |
| imageutil.DrawThickRectOutline(tagImg, image.Rectangle{Min: image.Point{X: box.Box[0], Y: box.Box[1]}, |
| Max: image.Point{X: box.Box[2], Y: box.Box[3]}}, color.Black, 2) |
| } |
| imageutil.Save("captcha_det_result.png", tagImg, 100) |
| } |
|
|