File size: 1,349 Bytes
5d4ecd8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
package examples
import (
ocr "github.com/getcharzp/go-ocr"
"github.com/up-zero/gotool/imageutil"
"log"
"testing"
"time"
)
func TestPaddleOcr(t *testing.T) {
start := time.Now()
config := ocr.Config{
OnnxRuntimeLibPath: "../lib/onnxruntime.dll",
DetModelPath: "../paddle_weights/det.onnx",
RecModelPath: "../paddle_weights/rec.onnx",
DictPath: "../paddle_weights/dict.txt",
}
var engine ocr.Engine
engine, err := ocr.NewPaddleOcrEngine(config)
if err != nil {
log.Fatalf("创建 OCR 引擎失败: %v\n", err)
}
defer engine.Destroy()
imagePath := "./test.png"
img, err := imageutil.Open(imagePath)
if err != nil {
log.Fatalf("加载图像失败: %v\n", err)
}
// 检测
boxes, err := engine.RunDetect(img)
if err != nil {
log.Fatalf("运行检测失败: %v\n", err)
}
t.Logf("检测完成, 耗时:%v\n", time.Since(start))
// 绘制检测区域
detImage := ocr.DrawBoxes(img, boxes)
imageutil.Save("det.png", detImage, 100)
// 识别
for _, box := range boxes {
start2 := time.Now()
result, err := engine.RunRecognize(img, box)
if err != nil {
log.Fatalf("运行识别失败: %v\n", err)
}
t.Logf("识别结果: %v, 耗时:%v\n", result, time.Since(start2))
}
t.Logf("测试完成,共识别 %d 个文本框, 耗时: %v\n", len(boxes), time.Since(start))
}
|