我正在創建一個簡單的 OCR 應用程式,它從卡片中讀取資訊并成功地將影像轉換為文本。這里是轉換文本的示例
名稱:綠巨人 綠系英雄
名稱:毒液顏色:黑色型反英雄
我們可以看到有時冒號轉換為 或其他符號,關鍵是如何將該字串轉換為具有預定義鍵的物件(在我們的例子中是名稱、顏色和型別),這樣做的最佳方法是什么?
uj5u.com熱心網友回復:
像這樣,我假設您的輸出有多行并且名稱或顏色不包含非字母數字字符,如果它們包含您將不得不從正則運算式中排除它們。
let myArray = [];
let string = `Name :Hulk Color Green Type Hero
Name :Venom Color :Black Type Anti Hero`;
// split by newline so we get the lines
let lines = string.split("\n");
// console.log(lines);
lines.forEach(transform);
function transform(line) {
let obj = {};
let parts = line.split(/Color|Type/);
obj['name'] = parts[0].replace(/[^0-9a-z ]/gi, "").replace("Name", "").replace(/\s\s /g, ' ').trim();
obj['color'] = parts[1].replace(/[^0-9a-z ]/gi, "").replace(/\s\s /g, ' ').trim();
obj['type'] = parts[2].replace(/[^0-9a-z ]/gi, "").replace(/\s\s /g, ' ').trim();
myArray.push(obj);
}
console.log(myArray);
uj5u.com熱心網友回復:
這是一個使用命名捕獲組的快速示例。
const s1 = 'Name :Hulk Color Green Type Hero';
const s2 = 'Name :Venom Color :Black Type Anti Hero';
const parse_ocr_string = (str) => {
const
regex = /Name(?<name>. )Color(?<color>. )Type(?<type>. )/,
clean = (s) => s.replace(/^\W |\W $/, '');
const { groups } = regex.exec(str);
return Object.fromEntries(['name', 'color', 'type']
.map((k) => [k, groups[k] ? clean(groups[k]) : undefined]));
};
const obj1 = parse_ocr_string(s1);
const obj2 = parse_ocr_string(s2);
console.log(obj1);
console.log(obj2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/338710.html
標籤:javascript
