|
|
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) |
|
|
} |
|
|
|