From cf8acaf9e7e1646fd0c09e179697f57ded042132 Mon Sep 17 00:00:00 2001 From: Nicole Rappe Date: Sat, 3 May 2025 07:55:42 -0600 Subject: [PATCH] Fixed OCR Node Import Behavior --- .../Node_OCR_Text_Extraction.jsx | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/Data/Server/WebUI/src/nodes/Data Analysis/Node_OCR_Text_Extraction.jsx b/Data/Server/WebUI/src/nodes/Data Analysis/Node_OCR_Text_Extraction.jsx index 13b8138..c9b2cc8 100644 --- a/Data/Server/WebUI/src/nodes/Data Analysis/Node_OCR_Text_Extraction.jsx +++ b/Data/Server/WebUI/src/nodes/Data Analysis/Node_OCR_Text_Extraction.jsx @@ -22,20 +22,40 @@ const OCRNode = ({ id, data }) => { const { setNodes } = useReactFlow(); const [ocrOutput, setOcrOutput] = useState(""); - const [engine, setEngine] = useState("None"); - const [backend, setBackend] = useState("CPU"); - const [dataType, setDataType] = useState("Mixed"); - - const [customRateEnabled, setCustomRateEnabled] = useState(true); - const [customRateMs, setCustomRateMs] = useState(1000); - - const [changeThreshold, setChangeThreshold] = useState(0); + const [engine, setEngine] = useState(data?.engine || "None"); + const [backend, setBackend] = useState(data?.backend || "CPU"); + const [dataType, setDataType] = useState(data?.dataType || "Mixed"); + const [customRateEnabled, setCustomRateEnabled] = useState(data?.customRateEnabled ?? true); + const [customRateMs, setCustomRateMs] = useState(data?.customRateMs || 1000); + const [changeThreshold, setChangeThreshold] = useState(data?.changeThreshold || 0); const valueRef = useRef(""); const lastUsed = useRef({ engine: "", backend: "", dataType: "" }); const lastProcessedAt = useRef(0); const lastImageHash = useRef(0); + // Sync updated settings back into node.data for persistence + useEffect(() => { + setNodes((nodes) => + nodes.map((n) => + n.id === id + ? { + ...n, + data: { + ...n.data, + engine, + backend, + dataType, + customRateEnabled, + customRateMs, + changeThreshold + } + } + : n + ) + ); + }, [engine, backend, dataType, customRateEnabled, customRateMs, changeThreshold]); + const sendToOCRAPI = async (base64) => { const cleanBase64 = base64.replace(/^data:image\/[a-zA-Z]+;base64,/, ""); @@ -91,7 +111,6 @@ const OCRNode = ({ id, data }) => { const imageChanged = hashDelta > hashThreshold; - // Only reprocess if config changed, or image changed AND time passed if (!configChanged && (!imageChanged || (now - lastProcessedAt.current < effectiveRate))) return; lastUsed.current = { engine, backend, dataType };