diff --git a/nibabel/nicom/csareader.py b/nibabel/nicom/csareader.py
index cba9e39e34..1bfaf02a25 100644
--- a/nibabel/nicom/csareader.py
+++ b/nibabel/nicom/csareader.py
@@ -64,11 +64,14 @@ def get_csa_header(dcm_data, csa_type='image'):
         return None
     element_no = section_start + element_offset
     try:
-        tag = dcm_data[(0x29, element_no)]
-    except KeyError:
         # The element could be missing due to anonymization
+        tag = dcm_data[(0x29, element_no)]
+        # Non-MRI Dicoms have string values in CSA tag
+        # This will cause read to throw a CSAReadError
+        # in most instances. If so, we return None
+        return read(tag.value)
+    except (KeyError, CSAReadError):
         return None
-    return read(tag.value)
 
 
 def read(csa_str):