go-ocr / examples /ddddocr_test.go
GetcharZp's picture
:sparkles: support ddddocr
d9a888a
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)
}