Dr. Abdulmalek
deploy: OmniFile AI Processor v4.3.0
900df0b
// API service for communicating with the Flask backend
const API_BASE_URL = 'http://localhost:5002/api';
class APIService {
constructor() {
this.baseURL = API_BASE_URL;
}
async request(endpoint, options = {}) {
const url = `${this.baseURL}${endpoint}`;
const config = {
headers: {
'Content-Type': 'application/json',
...options.headers,
},
...options,
};
// Remove Content-Type for FormData
if (options.body instanceof FormData) {
delete config.headers['Content-Type'];
}
try {
const response = await fetch(url, config);
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(errorData.error || `HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error('API request failed:', error);
throw error;
}
}
// Get available OCR engines and system status
async getEngines() {
return this.request('/ocr/engines');
}
// Process file with OCR and AI correction
async processFile(file, options = {}) {
const formData = new FormData();
formData.append('file', file);
// Add processing options
if (options.engines && options.engines.length > 0) {
options.engines.forEach(engine => {
formData.append('engines', engine);
});
}
if (options.language) {
formData.append('language', options.language);
}
if (options.aiCorrection !== undefined) {
formData.append('ai_correction', options.aiCorrection.toString());
}
if (options.combinationMethod) {
formData.append('combination_method', options.combinationMethod);
}
if (options.context) {
formData.append('context', options.context);
}
if (options.externalEngine) {
formData.append('external_engine', options.externalEngine);
}
if (options.confidence !== undefined) {
formData.append('confidence', options.confidence.toString());
}
return this.request('/ocr/process', {
method: 'POST',
body: formData,
});
}
// Correct text using AI without OCR processing
async correctText(text, language = 'mixed', context = '') {
return this.request('/ocr/correct-text', {
method: 'POST',
body: JSON.stringify({
text,
language,
context,
}),
});
}
// Get AI suggestions for text improvement
async getSuggestions(text, language = 'mixed') {
return this.request('/ocr/suggest-improvements', {
method: 'POST',
body: JSON.stringify({
text,
language,
}),
});
}
// Health check
async healthCheck() {
return this.request('/ocr/health');
}
}
// Create and export a singleton instance
const apiService = new APIService();
export default apiService;
// Export individual methods for convenience
export const {
getEngines,
processFile,
correctText,
getSuggestions,
healthCheck,
} = apiService;