Fix OCR failure when erroneous lang data is in cache (#16386)
Fixes #15472 If the Tesseract worker fails at any point, re-try with cache settings that overwrite the cache. It is difficult to catch more precise errors as those are pretty opaque and do not occur when loading lang data but when trying to detect text.gh/stable
parent
ee91c8a3a1
commit
8428faa085
|
@ -219,6 +219,10 @@ class FocalPointModal extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleTextDetection = () => {
|
handleTextDetection = () => {
|
||||||
|
this._detectText();
|
||||||
|
}
|
||||||
|
|
||||||
|
_detectText = (refreshCache = false) => {
|
||||||
const { media } = this.props;
|
const { media } = this.props;
|
||||||
|
|
||||||
this.setState({ detecting: true });
|
this.setState({ detecting: true });
|
||||||
|
@ -235,6 +239,7 @@ class FocalPointModal extends ImmutablePureComponent {
|
||||||
this.setState({ ocrStatus: 'preparing', progress });
|
this.setState({ ocrStatus: 'preparing', progress });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
cacheMethod: refreshCache ? 'refresh' : 'write',
|
||||||
});
|
});
|
||||||
|
|
||||||
let media_url = media.get('url');
|
let media_url = media.get('url');
|
||||||
|
@ -247,14 +252,20 @@ class FocalPointModal extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(async () => {
|
return (async () => {
|
||||||
await worker.load();
|
await worker.load();
|
||||||
await worker.loadLanguage('eng');
|
await worker.loadLanguage('eng');
|
||||||
await worker.initialize('eng');
|
await worker.initialize('eng');
|
||||||
const { data: { text } } = await worker.recognize(media_url);
|
const { data: { text } } = await worker.recognize(media_url);
|
||||||
this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false });
|
this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false });
|
||||||
await worker.terminate();
|
await worker.terminate();
|
||||||
})();
|
})().catch((e) => {
|
||||||
|
if (refreshCache) {
|
||||||
|
throw e;
|
||||||
|
} else {
|
||||||
|
this._detectText(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
this.setState({ detecting: false });
|
this.setState({ detecting: false });
|
||||||
|
|
Reference in New Issue