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