Faits : A. A._, mère de deux enfants nés en 1985 et 2000, est arrivée en Suisse en 2004. Le 28 janvier 2009, elle a déposé une demande de prestations de l'assurance-invalidité, en précisant qu'elle travaillait en qualité de femme de ménage, qu'elle était en incapacité de travail depuis le 28 avril 2008 et qu'elle avait été au chômage du 8 janvier 2008 au 3 mars 2009. L'Office de l'assurance-invalidité du canton de Genève (l'office AI) a recueilli le dossier de l'office cantonal de l'emploi. Celui-ci contenait une confirmation de réinscription du 8 avril 2009, où l'assurée indiquait qu'elle cherchait du travail à plein temps. Sur un curriculum vitae (CV), non daté, figurait la mention dactylographiée "disponibilité 50 %", tandis qu'un taux de "100 %" était ajouté à la main à côté du texte dactylographié. Une enquête économique sur le ménage a été conduite le 13 juillet 2010. L'assurée y déclarait qu'elle cherchait du travail à plein temps, tandis que l'enquêtrice la considérait comme une personne active à 50 %. Par décision du 15 juillet 2011, qui a fait suite à un projet du 13 août 2010, l'office AI a retenu un statut de personne active à 50 %. Il a fixé le taux d'invalidité à 9 % selon la méthode mixte d'évaluation (4 % dans la sphère professionnelle, 5 % dans les travaux ménagers) et rejeté la demande (rente d'invalidité et mesures d'orientation professionnelles). B. A._ a déféré cette décision à la Cour de justice de la République et canton de Genève, Chambre des assurances sociales, en concluant à son annulation, à la mise en oeuvre d'une expertise pluridisciplinaire et à l'octroi d'un trois-quarts de rente au minimum. L'assurée a comparu personnellement le 12 octobre 2011. Elle a notamment déclaré qu'elle avait travaillé à 100 % jusqu'à la naissance de son deuxième fils en 2000, et qu'elle avait ensuite diminué son activité à 50 % pour raisons de santé jusqu'en 2007. En arrêt complet de travail depuis janvier 2008, elle avait repris une activité de dame de compagnie en 2009, à raison de 7 heures hebdomadaires. La juridiction cantonale a mis en oeuvre une expertise bidisciplinaire (rhumatologique et psychiatrique). Les docteurs B._, spécialiste en médecine interne et maladies rhumatismales, et C._, spécialiste en psychiatrie et psychothérapie, ont attesté qu'une activité lucrative est raisonnablement exigible du point de vue somatique et psychique, qu'elle doit être légère du fait des limitations somatiques (pas de port de charges lourdes, pas de position longtemps maintenue) et qu'elle ne peut pas dépasser un taux de 50 % en raison des troubles psychiatriques (consilium du 25 septembre 2013). Par jugement du 18 juin 2014, la Cour de justice a retenu que l'assurée aurait travaillé à plein temps sans l'atteinte à la santé et qu'elle subissait une perte de gain de 58 %. Elle a dès lors admis partiellement le recours, reconnu le droit de l'assurée à une demi-rente d'invalidité dès le 1 er juillet 2009, condamné l'office AI aux dépens (3'000 fr.), mis les frais de l'expertise judiciaire (6'446 fr.) ainsi que l'émolument judiciaire (1'000 fr.) à charge de l'office AI. C. L'office AI interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation. L'intimée conclut au rejet du recours. L'Office fédéral des assurances sociales a renoncé à se déterminer.