71 lines
2.1 KiB
Go
71 lines
2.1 KiB
Go
|
package main
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"github.com/otiai10/gosseract/v2"
|
|||
|
"github.com/ssgo/log"
|
|||
|
"github.com/ssgo/u"
|
|||
|
"strings"
|
|||
|
)
|
|||
|
|
|||
|
func checkImg(imgStr string) error {
|
|||
|
text := ocrImage(u.UnBase64(strings.Split(imgStr, "base64,")[1]))
|
|||
|
log.DefaultLogger.Info("checkImg", "imgStrLen", len(imgStr), "imgLen", len(u.UnBase64(strings.Split(imgStr, "base64,")[1])), "text", text)
|
|||
|
score, err := parseRiskScore(ask(buildImgDetectionPrompt(text)))
|
|||
|
if err != nil {
|
|||
|
log.DefaultLogger.Error("parseImgResp error", "err", err)
|
|||
|
return err
|
|||
|
}
|
|||
|
err = conn.WriteJSON(map[string]any{
|
|||
|
"type": "imageResult",
|
|||
|
"result": map[string]any{
|
|||
|
"score": score,
|
|||
|
"isSuspicious": score >= 50,
|
|||
|
},
|
|||
|
})
|
|||
|
if err != nil {
|
|||
|
log.DefaultLogger.Error("sendImgScore Error", "err", err)
|
|||
|
return err
|
|||
|
}
|
|||
|
log.DefaultLogger.Info("sendImgScore")
|
|||
|
return nil
|
|||
|
}
|
|||
|
|
|||
|
func ocrImage(image []byte) string {
|
|||
|
client := gosseract.NewClient()
|
|||
|
defer client.Close()
|
|||
|
err := client.SetImageFromBytes(image)
|
|||
|
if err != nil {
|
|||
|
fmt.Println(err)
|
|||
|
log.DefaultLogger.Error("ocr setimg error", "err", err)
|
|||
|
return ""
|
|||
|
}
|
|||
|
fmt.Println(u.Red("111"))
|
|||
|
text, err := client.Text()
|
|||
|
fmt.Println(text)
|
|||
|
if err != nil {
|
|||
|
fmt.Println(err)
|
|||
|
log.DefaultLogger.Error("ocr error", "err", err)
|
|||
|
return ""
|
|||
|
}
|
|||
|
return text
|
|||
|
}
|
|||
|
|
|||
|
func buildImgDetectionPrompt(content string) string {
|
|||
|
return fmt.Sprintf(`你是一名反诈骗专家,专门分析聊天记录,判断其中是否涉及诈骗信息。请仔细阅读以下文字,并回答以下问题:
|
|||
|
|
|||
|
1. 这段内容是否包含诈骗信息?如果是,请给出具体的诈骗类型(如刷单、冒充客服、杀猪盘等)。
|
|||
|
2. 请分析这段内容是否具有诈骗话术,例如使用了“限时优惠”“保证赚钱”“不透露给别人”等常见诈骗用语。
|
|||
|
3. 诈骗信息通常会使用哪些伎俩欺骗受害者?请指出可能的欺诈手法。
|
|||
|
4. 请用简洁的语言(不超过100字)总结你的分析结果,并给出风险等级(低、中、高)。
|
|||
|
5. 如果有必要,请建议用户如何避免被骗。
|
|||
|
|
|||
|
请返回JSON格式:
|
|||
|
{
|
|||
|
"risk_score": 0-100,
|
|||
|
"risk_reason": "主要风险点"
|
|||
|
}
|
|||
|
|
|||
|
待分析的文本如下:%s`, content)
|
|||
|
}
|