HOME


Mini Shell 1.0
La Pieza.DO | Todo lo que buscas!

Bienvenido de nuevo!

Acceso Cuenta Delivery
DIR: /var/www/node-app/src/controllers/
Upload File :
Current File : /var/www/node-app/src/controllers/ocrValidationController.js
const ocrService = require("../services/ocrService");
const pdfParse = require("pdf-parse"); // Asegúrate de tener esta librería instalada

const extractTextFromPDF = (buffer) => {
  return pdfParse(buffer).then((data) => {
    return data.text; // Devuelve el texto extraído
  });
};

exports.validateOCR = async (req, res) => {
  try {
    const fileBuffer = req.file.buffer;
    let ocrResult;

    const fileType = req.file.mimetype;
    console.log("Received file type:", fileType);

    if (fileType === "application/pdf") {
      console.log("Processing PDF file");
      const pdfText = await extractTextFromPDF(fileBuffer);
      console.log("Extracted text from PDF:", pdfText);
      ocrResult = { success: true, message: pdfText };
    } else {
      console.log("Processing image file");
      ocrResult = await ocrService.validate(fileBuffer);
    }

    console.log("OCR result:", ocrResult);

    if (ocrResult.success) {
      // const denominationMatch = ocrResult.message.match(
      //   /DENOMINACIÓN SOCIAL:\s*(.*?)(?=\s*\n)/i
      // );
      const denominationMatch = ocrResult.message.match(
        /DENOMINACIÓN SOCIAL:\s*([^\n\r]+)/i
      );
      const rncMatch = ocrResult.message.match(/RNC:\s*(1[\d\-]+)/i);

      console.log("Denomination match:", denominationMatch);
      console.log("RNC match:", rncMatch);

      //ESTE CAMBIO SE REALIZO PARA PODER PASAR LA VALIDACION HASTA RESOLVER LA FUNCIONALIDAD KQUIROZ
      // if (rncMatch) {
      //   const rnc = rncMatch[1].replace(/-/g, "");
      //   const denomination = denominationMatch
      //     ? denominationMatch[1].trim()
      //     : "N/A";

      //   return res.json({
      //     success: true,
      //     message: {
      //       denomination: denomination,
      //       rnc: rnc,
      //     },
      //   });
      // } else {
      //   return res.json({
      //     success: false,
      //     message:
      //       "No se encontró un RNC válido que comience con 1 en el texto.",
      //   });
      // }

      // ESTO FUE LO QUE SE AGREGO PARA FINES DE FUNCIONALIDAD
      const rnc = rncMatch[1].replace(/-/g, "");
      const denomination = denominationMatch
        ? denominationMatch[1].trim()
        : "N/A";

      return res.json({
        success: true,
        message: {
          denomination: denomination,
          rnc: rnc,
        },
      });
       // ESTO FUE LO QUE SE AGREGO PARA FINES DE FUNCIONALIDAD
    } else {
      return res.status(500).json({
        success: false,
        message: "OCR falló al procesar el archivo.",
      });
    }
  } catch (error) {
    console.error("Error processing request:", error);
    return res.status(500).json({
      success: false,
      message: error.message || "Error al procesar la solicitud.",
    });
  }
};