Usar API de Datalab.to para convertir PDF, DOC e imágenes a Markdown

Intermedio

Este es unDocument Extraction, Multimodal AIflujo de automatización del dominio deautomatización que contiene 11 nodos.Utiliza principalmente nodos como Set, Wait, Switch, FormTrigger, HttpRequest. Usar la API de Datalab.to para convertir PDF, DOC e imágenes a Markdown

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "b3c467df4053d13fe31cc98f3c66fa1d16300ba750506bfd019a0913cec71ea3"
  },
  "nodes": [
    {
      "id": "c302f8e5-6bed-4b64-8d52-33eaa5fce86a",
      "name": "Al enviar el formulario",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -336,
        48
      ],
      "webhookId": "a857ad3f-4b4d-4574-b503-809a95b1fbbf",
      "parameters": {
        "options": {},
        "formTitle": "upload file",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "file",
              "multipleFiles": false,
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3cc12307-f5da-476a-811a-79920f20abf7",
      "name": "Obtener Markdown",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        336,
        48
      ],
      "parameters": {
        "url": "={{ $json.request_check_url }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "7Wx4MGEDgCG0D7fT",
          "name": "datalab.io"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ec9e9703-fb38-4ba5-97f6-a73bee7c47f7",
      "name": "Enviar a Datalab API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -112,
        48
      ],
      "parameters": {
        "url": "https://www.datalab.to/api/v1/marker",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "max_pages",
              "value": "4"
            },
            {
              "name": "use_llm",
              "value": "true"
            },
            {
              "name": "output_format",
              "value": "markdown"
            },
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "file"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "7Wx4MGEDgCG0D7fT",
          "name": "datalab.io"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "542793bf-05c1-4c6c-b0e0-b087669f966c",
      "name": "Establecer campos",
      "type": "n8n-nodes-base.set",
      "position": [
        560,
        48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "20280dbd-8188-4f5e-8e4e-74621d65d40a",
              "name": "markdown",
              "type": "string",
              "value": "={{ $json.markdown }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "cb900de1-e4b1-488f-8a12-9946bb8466f6",
      "name": "Esperar",
      "type": "n8n-nodes-base.wait",
      "position": [
        112,
        48
      ],
      "webhookId": "7b49cf9b-9859-4361-a8b8-2407d114d418",
      "parameters": {
        "amount": 10
      },
      "typeVersion": 1.1
    },
    {
      "id": "9fcdcaab-2041-4411-8ec1-10edfe29f1d6",
      "name": "Nota adhesiva13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1424,
        -32
      ],
      "parameters": {
        "width": 972,
        "height": 564,
        "content": "![](https://res.cloudinary.com/dd6vlwblr/image/upload/v1756196495/Convert_PDF_DOC_IMAGES_to_1_sfdzu1.png)"
      },
      "typeVersion": 1
    },
    {
      "id": "32550fd8-2570-4e42-b249-8d53288da00a",
      "name": "Nota adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        -32
      ],
      "parameters": {
        "width": 1200,
        "height": 272,
        "content": "## Convert Files to Markdown for LLM with Datalab.to"
      },
      "typeVersion": 1
    },
    {
      "id": "f968189c-83c4-436c-91c6-dc0313ee4256",
      "name": "Nota adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        272
      ],
      "parameters": {
        "width": 1200,
        "height": 256,
        "content": "## Guide\nThis simple automation enables you to convert .doc, .pdf, .png, .jpg, and .webp files to markdown using datalab.to API. This is useful for llm workflows for ai processing. \n\nSetup \n- Sign up to datalab.to to get your api key. Get the free $5 credits by entering your payment method.\n- Set up a Generic Header with name \"X-API-Key\" and api key as the value. \n- Thats it you are good to go.\n\nLearn more on tweaking the body payload here; [api reference](https://www.datalab.to/redoc#operation/marker_api_v1_marker_post)"
      },
      "typeVersion": 1
    },
    {
      "id": "883e4090-cb4f-4de6-bfc4-4c5c7ce85728",
      "name": "Nota adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -32
      ],
      "parameters": {
        "color": 6,
        "width": 400,
        "height": 416,
        "content": "## Polling Confirmation Node\n\nYou can add this node after \"Get Markdown\" node to confirm if the get request worked or the doc is still being processed. If the outcome is \"*success*\" then proceed, if \"*failed*\" then plug that route to the wait node, to try again. You can also add more outcomes of this node to cover api call fails. If you are processing **larger files**, increase the wait time."
      },
      "typeVersion": 1
    },
    {
      "id": "4f0c8ae8-e92e-419f-a609-d426db8321d8",
      "name": "Interruptor",
      "type": "n8n-nodes-base.switch",
      "disabled": true,
      "position": [
        832,
        192
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "success",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "cbac06bd-0ee6-40ac-bad9-bdb0929ca0ad",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "complete"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "failed",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bc2570f6-c9ec-4c4f-9a04-863be5fb1ced",
                    "operator": {
                      "type": "string",
                      "operation": "notEquals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "complete"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "33ec2be6-e49a-4973-b105-5db71fc2cf40",
      "name": "Nota adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        400
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 128,
        "content": "## Wanna work with me?\n**Email**: joseph@uppfy.com\n**X/Twitter**: [@juppfy](https://x.com/juppfy)"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "cb900de1-e4b1-488f-8a12-9946bb8466f6": {
      "main": [
        [
          {
            "node": "3cc12307-f5da-476a-811a-79920f20abf7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3cc12307-f5da-476a-811a-79920f20abf7": {
      "main": [
        [
          {
            "node": "542793bf-05c1-4c6c-b0e0-b087669f966c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c302f8e5-6bed-4b64-8d52-33eaa5fce86a": {
      "main": [
        [
          {
            "node": "ec9e9703-fb38-4ba5-97f6-a73bee7c47f7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ec9e9703-fb38-4ba5-97f6-a73bee7c47f7": {
      "main": [
        [
          {
            "node": "cb900de1-e4b1-488f-8a12-9946bb8466f6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Extracción de documentos, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos11
Categoría2
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Joseph

Joseph

@mjomba

Automation expert specializing in building smart, scalable workflows using tools like n8n, Make, and Airtable. I help businesses save time, reduce manual work, and grow faster with tailored automation solutions. Feel free to reach out at joseph@uppfy.com to discuss your project. I am also on x.com/juppfy

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34