Result of ray_cast on armature deformed mesh
Use the depsgraph

To hit the evaluated mesh use the depsgraph. (Assuming 2.8+)

Example, raycasts from global (0, 0, 10) in a negative global z direction.  The object raycast uses the object space of the mesh, so convert the rays to object space and the result to global.

import bpy
from mathutils import Vector

context = bpy.context

ray_co = (0, 0, 10) 
ray_dir = (0, 0, -1)

ob = context.object
mw = ob.matrix_world
mwi = mw.inverted()

hit, loc, _, _ = ob.ray_cast(
    mwi @ Vector(ray_co),
    mwi @ Vector(ray_dir),
    depsgraph=context.evaluated_depsgraph_get()
    )
if hit:
    bpy.ops.object.empty_add(
        location=mw @ loc)