diff --git a/app/jobs/forms.py b/app/jobs/forms.py
index 04b9381c2c9b3dc9f699c2e883cc4d7e9539a7a8..ec530c95f1f53a196f425a18fff24105bc6687d7 100644
--- a/app/jobs/forms.py
+++ b/app/jobs/forms.py
@@ -65,3 +65,16 @@ class AddOCRJobForm(FlaskForm):
                     'File does not have an approved extension: '
                     '.pdf | .tif | .tiff'
                 )
+
+
+class AddMergeImagesJobForm(FlaskForm):
+    files = MultipleFileField('Files', validators=[DataRequired()])
+
+    def validate_files(form, filed):
+        for file in field.data:
+            if not file.filename.lower().endswith(('.jpeg', '.jpg', '.png',
+                                                   '.tiff', '.tif')):
+                raise ValidationError(
+                    'File does not have an approved extension: '
+                    '.jpeg | .jpg | .png | .tiff | .tif'
+                )
diff --git a/app/services/views.py b/app/services/views.py
index 787ebac0a4c3f7dca3e964bed8d5e2f1c34a41d7..bf7cd723445072f022519bea0263042db853a5bf 100644
--- a/app/services/views.py
+++ b/app/services/views.py
@@ -1,5 +1,5 @@
 from app import db
-from app.jobs.forms import AddNLPJobForm, AddOCRJobForm
+from app.jobs.forms import AddNLPJobForm, AddOCRJobForm, AddMergeImagesJobForm
 from app.models import Job, JobInput
 from flask import (abort, current_app, flash, make_response, render_template,
                    url_for)
@@ -10,7 +10,10 @@ import json
 import os
 
 
-SERVICES = {'nlp': {'name': 'Natural Language Processing',
+SERVICES = {'merge_images': {'name': 'Merge Images',
+                             'resources': {'mem_mb': 4096, 'n_cores': 4},
+                             'add_job_form': AddMergeImagesJobForm},
+            'nlp': {'name': 'Natural Language Processing',
                     'resources': {'mem_mb': 4096, 'n_cores': 2},
                     'add_job_form': AddNLPJobForm},
             'ocr': {'name': 'Optical Character Recognition',