修正圖像初始化錯誤
This commit is contained in:
		
							
								
								
									
										35
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								README.md
									
									
									
									
									
								
							@@ -161,3 +161,38 @@ GET    | /api/images?sort=choice        | 根据精选集推荐(指定精选集I
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
* 注意, 筛选规则为多条件取交集, 单条件的复数取并集
 | 
					* 注意, 筛选规则为多条件取交集, 单条件的复数取并集
 | 
				
			||||||
* 权重强化属于排序规则而非过滤规则
 | 
					* 权重强化属于排序规则而非过滤规则
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 獲取任務列表(標準查询)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GET /api/tasks
 | 
				
			||||||
 | 
					```javascript
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    page: 1,             // 当前页码
 | 
				
			||||||
 | 
					    pageSize: 20,        // 分页数
 | 
				
			||||||
 | 
					    next: true,          // 是否存在下一页
 | 
				
			||||||
 | 
					    list: [{
 | 
				
			||||||
 | 
					        id: 'xxxxxx',    // 任務ID
 | 
				
			||||||
 | 
					        type: '',        // 任務類型(推理, 訓練)
 | 
				
			||||||
 | 
					        data: {},        // 任務執行數據
 | 
				
			||||||
 | 
					        create_time: ''  // 任務創建時間
 | 
				
			||||||
 | 
					        update_time: ''  // 任務更新時間
 | 
				
			||||||
 | 
					    }],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Websocket /api/tasks/{task_id}
 | 
				
			||||||
 | 
					```javascript
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    // 狀態
 | 
				
			||||||
 | 
					    // 進度
 | 
				
			||||||
 | 
					    // 結果
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* 通過websocket監聽任務狀態變化
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 模型(我的|共享|熱門|查詢)
 | 
				
			||||||
 | 
					### 圖片(我的|共享|熱門|查詢)
 | 
				
			||||||
 | 
					### 標籤
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								bin/main.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								bin/main.go
									
									
									
									
									
								
							@@ -543,7 +543,11 @@ func main() {
 | 
				
			|||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		var img models.Image
 | 
							var img models.Image
 | 
				
			||||||
		img.Init(content)
 | 
							if err := img.Init(content); err != nil {
 | 
				
			||||||
 | 
								log.Println("初始化图片失败", format, err)
 | 
				
			||||||
 | 
								http.Error(w, err.Error(), http.StatusBadRequest)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		data, err := img.ToWebP(width, height, fit)
 | 
							data, err := img.ToWebP(width, height, fit)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.Println("转换图片失败", err)
 | 
								log.Println("转换图片失败", err)
 | 
				
			||||||
@@ -575,7 +579,11 @@ func main() {
 | 
				
			|||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		var img models.Image
 | 
							var img models.Image
 | 
				
			||||||
		img.Init(content)
 | 
							if err := img.Init(content); err != nil {
 | 
				
			||||||
 | 
								log.Println("初始化图片失败", version, format, err)
 | 
				
			||||||
 | 
								w.WriteHeader(http.StatusNotFound)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		data, err := img.ToWebP(width, height, fit)
 | 
							data, err := img.ToWebP(width, height, fit)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.Println("转换图片失败", err)
 | 
								log.Println("转换图片失败", err)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										68
									
								
								bin/ocr.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								bin/ocr.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					# python 實現圖片文字辨識(ocr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import pytesseract
 | 
				
			||||||
 | 
					from PIL import Image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 設置tesseract執行文件的路徑(linux)
 | 
				
			||||||
 | 
					pytesseract.pytesseract.tesseract_cmd = '/usr/bin/tesseract'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 設置提取中文和英文
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 讀取圖片
 | 
				
			||||||
 | 
					image = Image.open('data/tt.jpeg')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 圖片轉為灰度圖
 | 
				
			||||||
 | 
					image = image.convert('L')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 圖片二值化
 | 
				
			||||||
 | 
					threshold = 127
 | 
				
			||||||
 | 
					table = []
 | 
				
			||||||
 | 
					for i in range(256):
 | 
				
			||||||
 | 
					    if i < threshold:
 | 
				
			||||||
 | 
					        table.append(0)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        table.append(1)
 | 
				
			||||||
 | 
					image = image.point(table, '1')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 圖片轉為字符串
 | 
				
			||||||
 | 
					#text = pytesseract.image_to_string(image, lang='chi_sim+eng')
 | 
				
			||||||
 | 
					#print(text)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#data = pytesseract.image_to_boxes(image, lang='chi_sim+eng')
 | 
				
			||||||
 | 
					#print(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 座標(全數據)
 | 
				
			||||||
 | 
					#data = pytesseract.image_to_data(image, lang='chi_sim+eng')
 | 
				
			||||||
 | 
					#print(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					data = pytesseract.image_to_alto_xml(image, lang='chi_sim+eng')
 | 
				
			||||||
 | 
					#print(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 打印格式化的XML
 | 
				
			||||||
 | 
					#from xml.dom.minidom import parseString
 | 
				
			||||||
 | 
					#dom = parseString(data)
 | 
				
			||||||
 | 
					#print(dom.toprettyxml())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 打印格式化的JSON
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					from xmljson import badgerfish as bf
 | 
				
			||||||
 | 
					from xml.etree.ElementTree import fromstring
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 過濾掉@CONTENT爲空的數據和爲數字的數據
 | 
				
			||||||
 | 
					def filter_data(data):
 | 
				
			||||||
 | 
					    if isinstance(data, dict):
 | 
				
			||||||
 | 
					        if '@CONTENT' in data:
 | 
				
			||||||
 | 
					            if data['@CONTENT'] == '' or data['@CONTENT'].isdigit():
 | 
				
			||||||
 | 
					                return None
 | 
				
			||||||
 | 
					        for k, v in data.items():
 | 
				
			||||||
 | 
					            if isinstance(v, dict):
 | 
				
			||||||
 | 
					                data[k] = filter_data(v)
 | 
				
			||||||
 | 
					            elif isinstance(v, list):
 | 
				
			||||||
 | 
					                data[k] = [filter_data(i) for i in v]
 | 
				
			||||||
 | 
					    return data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					xml = fromstring(data)
 | 
				
			||||||
 | 
					json = json.dumps(bf.data(xml), indent=4, ensure_ascii=False)
 | 
				
			||||||
 | 
					print(json)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2,6 +2,7 @@ package models
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"image"
 | 
						"image"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -20,13 +21,15 @@ type Image struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 初始化图片
 | 
					// 初始化图片
 | 
				
			||||||
func (img *Image) Init(content string) {
 | 
					func (img *Image) Init(content string) (err error) {
 | 
				
			||||||
 | 
						var body io.ReadCloser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(regexp.MustCompile(`image.gameuiux.cn`).FindStringSubmatch(content)) > 0 {
 | 
						if len(regexp.MustCompile(`image.gameuiux.cn`).FindStringSubmatch(content)) > 0 {
 | 
				
			||||||
		key := regexp.MustCompile(`^https?://image.gameuiux.cn/`).ReplaceAllString(content, "")
 | 
							key := regexp.MustCompile(`^https?://image.gameuiux.cn/`).ReplaceAllString(content, "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// 从OSS中读取图片
 | 
							// 从OSS中读取图片
 | 
				
			||||||
		bucket := GetBucket("gameui-image2")
 | 
							bucket := GetBucket("gameui-image2")
 | 
				
			||||||
		body, err := bucket.GetObject(key)
 | 
							body, err = bucket.GetObject(key)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.Println("读取图片失败", err)
 | 
								log.Println("读取图片失败", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
@@ -52,8 +55,9 @@ func (img *Image) Init(content string) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
 | 
							var resp *http.Response
 | 
				
			||||||
		log.Println("直接从网络下载图片:", content)
 | 
							log.Println("直接从网络下载图片:", content)
 | 
				
			||||||
		resp, err := http.Get(content)
 | 
							resp, err = http.Get(content)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.Println("下载图片失败", err)
 | 
								log.Println("下载图片失败", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
@@ -78,6 +82,7 @@ func (img *Image) Init(content string) {
 | 
				
			|||||||
			log.Println("解码图像失败", err)
 | 
								log.Println("解码图像失败", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user